Как удалить все файлы и каталог, кроме одного именованного каталога из определенной папки в centos
Я хочу удалить все файлы и каталоги из определенного каталога, кроме одного каталога. Для той же операции я запустил эту команду
# rm -R -df!(dir_name_not_to_delete)
Он работает в Ubuntu, но выдает ошибку в CentOS; т.е.
-bash: !: event not found " what is the reason for this error"
Что мне нужно использовать в CentOS, чтобы заставить это работать? Есть ли альтернатива '!' это знак в Centos?
2 ответа
Первый, !(dir_name_not_to_delete)
это расширенный шар. Чтобы это работало, вам нужно включить опцию расширенных глобусов. Бежать:
shopt -s extglob
Во-вторых, конкретное сообщение об ошибке, которое вы видите, -bash: !: event not found
, означает, что у вас также включено расширение истории. Если вы не хотите расширять историю, лучше всего ее отключить:
set +H
Хорошо, как насчет списка всего в этой папке, затем исключить эту папку и удалить все остальное
find MYDIR -not -name EXCEPT_DIR -exec rm -rf {}\;
Но перед этим просто проверьте, что найдет команда find, например:
find MYDIR -not -name EXCEPT_DIR