Мне нужно удалить все файлы, кроме одного (его имя определено), из данного каталога.
Как я могу сделать это с терминала в OS X? Могу ли я сделать это с помощью одной команды?
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
Не совсем «хай-тек», но гораздо сложнее случайно удалить файл, который вы хотите сохранить, если вы используете этот подход.
Очевидно, что этот подход не работает, если файл должен постоянно существовать в каталоге, в то время как происходит резня.
Пытаться
rm `ls | grep -v '^defined$'`