Как исключить папки для удаления при использовании ( 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/

2 ответа

Решение

Ты можешь использовать 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=""

Поскольку список этих папок, которые вы не хотите удалять, довольно короткий, и, похоже, он не соответствует какой-либо очевидной схеме, я думаю, вам просто нужно переместить эти директории куда-нибудь, прежде чем удалять остальные.

Другие вопросы по тегам