2

Мне нужно удалить все файлы, кроме одного (его имя определено), из данного каталога.

Как я могу сделать это с терминала в OS X? Могу ли я сделать это с помощью одной команды?

3 ответа3

9
shopt -s extglob && rm !(non_delete_file)

или же

rm -f !(non_delete_file)

или же

find . ! -name non_delete_file -delete

Обратите внимание, что приведенная выше команда find будет работать рекурсивно - она удалит все файлы и каталоги в текущем каталоге и во всех подкаталогах. Если это проблема, используйте -type f (для сопоставления только файлов) и -maxdepth 1 (для сопоставления только в текущем каталоге, игнорируя подкаталоги)

find . -type f -maxdepth 1 ! -name non_delete_file -delete
1
  1. переместите файл, который вы хотите сохранить, куда-нибудь за пределы каталога
  2. удалить все в каталоге, используя ваш любимый метод
  3. переместить файл, который вы хотите сохранить обратно в каталог

Не совсем «хай-тек», но гораздо сложнее случайно удалить файл, который вы хотите сохранить, если вы используете этот подход.

Очевидно, что этот подход не работает, если файл должен постоянно существовать в каталоге, в то время как происходит резня.

0

Пытаться

rm `ls | grep -v '^defined$'`

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