2010-02-22 13:58:05 +0000 2010-02-22 13:58:05 +0000
84
84
Advertisement

Удалить соответствующие файлы во всех подкаталогах

Advertisement

Как я могу удалить все .swp файлы во всех моих подкаталогах под Linux?

Advertisement
Advertisement

Ответы (5)

147
147
147
2010-02-22 13:59:15 +0000

Удалите все файлы *.swp под текущей директорией, используйте команду find в одной из следующих форм:

  • find . -name \*.swp -type f -delete

Опция -delete означает, что поиск напрямую удалит соответствующие файлы. Это наилучшее совпадение с фактическим вопросом ОП.

Использование -type f означает, что поиск будет обрабатывать только файлы.

  • find . -name \*.swp -type f -exec rm -f {} \; find . -name \*.swp -type f -exec rm -f {} + Опция -exec позволяет найти выполнение произвольной команды для каждого файла. В первом варианте команда будет выполняться один раз на файл, а во втором будет выполняться как можно меньше команд, заменяя {} на как можно большее количество параметров.

  • find . -name \*.swp -type f -print0 | xargs -0 rm -f

Сопряжение вывода в xargs используется в виде более сложных команд для каждого файла, чем это возможно при -exec. Опция -print0 говорит find разделить совпадения с ASCII NULL вместо новой строки, а -0 говорит xargs ожидать NULL-разделенный вход. Это делает конструкцию трубопровода безопасной для имен файлов, содержащих пробелы.

Подробности и примеры см. в разделе man find.

16
16
16
2010-02-22 14:07:23 +0000

find . -name '*.swp' -delete

Найдя, удалите сами, … Для дополнительной безопасности также подумайте о добавлении -type f только для файлов.

4
Advertisement
4
4
2010-02-22 14:11:50 +0000
Advertisement
find /path -type f -name "*.swp" -delete
find /path -type f -name "*.swp" -exec rm -f "{}" +;

баш 4.0 0

shopt -s globstar
rm -f /path/**/*.swp
2
2
2
2010-02-22 14:04:52 +0000

Для поиска в своем домашнем каталоге (и с помощью GNU ‘find’ и ‘xargs’) я бы воспользовался:

find $HOME -name '*.swp' -print0 | xargs -0 rm -f

Использование ‘-print0’ и ‘-0’ означает, что имена будут разделены символами ASCII NUL ‘\0’, и это будет обрабатывать пути файлов с пробелами и т.д. в именах. Если вы думаете, что у вас могут быть каталоги (или файлы устройств, или FIFO, или другие не-файлы) под вашим каталогом, заканчивающимся на ‘.swp’, вы можете добавить опцию ‘-type f’, чтобы ‘найти’. Если у вас есть только каталоги, команда выше не сможет их шумно удалить.

0
Advertisement
0
0
2019-11-17 04:04:10 +0000
Advertisement

Если вы хотите удалить все файлы из всех подпапок, вы можете воспользоваться предоставленной командой,

$ find . -name \* -type f -delete
Advertisement

Похожие вопросы

6
10
11
5
7
Advertisement
Advertisement