1

Я хочу удалить все файлы и каталоги из определенного каталога, кроме одного каталога. Для той же операции я выполнил эту команду

# rm -R -df !(dir_name_not_to_delete)

Он работает в Ubuntu, но выдает ошибку в CentOS; т.е.

-bash: !: event not found  " what is the reason for this error"

Что я должен использовать в CentOS, чтобы заставить это работать? Есть ли альтернатива?'этот знак в Centos?

2 ответа2

1

Сначала !(dir_name_not_to_delete) это расширенный глобус. Чтобы это работало, вам нужно включить опцию расширенных глобусов. Бежать:

shopt -s extglob

Во-вторых, конкретное сообщение об ошибке, которое вы видите, -bash: !: event not found , означает, что у вас также включено расширение истории. Если вы не хотите расширять историю, лучше всего ее отключить:

set +H
0

Хорошо, как насчет списка всего в этой папке, затем исключить эту папку и удалить все остальное

find MYDIR -not -name EXCEPT_DIR -exec rm -rf {}\;

Но перед этим просто проверьте, что найдет команда find, например:

find MYDIR -not -name EXCEPT_DIR

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .