在父目录上使用(rm -rf *)时如何排除要删除的文件夹

在父目录上使用(rm -rf *)时如何排除要删除的文件夹

我运行以下命令行来删除目录中的所有文件/目录:

       cd /home/abdennour/android/

       rm -rf *

该目录的架构如下:

   /home/abdennour/android/
   /home/abdennour/android/documents/
   /home/abdennour/android/documents/medialib/
   /home/abdennour/android/documents/preview/
   /home/abdennour/android/fixtures/
   /home/abdennour/android/images/
   /home/abdennour/android/images/hard/
   /home/abdennour/android/images/mlibrary/
   /home/abdennour/android/images/mlibrary/thumbs/
   /home/abdennour/android/js/ 
  .....

我想删除所有但不包括以下目录:

  /home/abdennour/android/documents/
  /home/abdennour/android/images/mlibrary/

答案1

您可以使用GLOBIGNORE环境变量。假设您要删除除/home/abdennour/android/documents/和之外的所有内容/home/abdennour/android/images/mlibrary/,那么您可以执行以下操作:

cd /home/abdennour/android/
export GLOBIGNORE="documents:images"
rm -rf *
cd images
export GLOBIGNORE="mlibrary"
rm -rf *
export GLOBIGNORE=""

答案2

由于您不想删除的目录列表很短,而且似乎不符合任何明显的模式,所以我认为您只需要在删除其余目录之前将这些目录移动到某个位置。

相关内容