Как удалить все файлы и каталог, кроме одного именованного каталога из определенной папки в 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
Другие вопросы по тегам