63

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

4 ответа4

120

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

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

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

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

  • 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

find . -name '*.swp' -delete

После того, как find делает удаление, удаляет любой риск для места, встроенного в имя файла Для дополнительной безопасности также рассмотрите добавление -type f только для файлов.

3
find /path -type f -name "*.swp" -delete
find /path -type f -name "*.swp" -exec rm -f "{}" +;

Баш 4.0

shopt -s globstar
rm -f /path/**/*.swp
2

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

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

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

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