Не забудьте взглянуть на такие программы, как trash-cli, чтобы вы могли восстановить их вместо использования rm. code.google.com/p/trash-cli (Вы просто замените «rm» на «trash» во всех приведенных ниже ответах.)
Ответы:
137
Удалите все файлы * .swp из текущего каталога, используйте findкоманду в одной из следующих форм:
find . -name \*.swp -type f -delete
-deleteОпция означает , что найти непосредственно удалить соответствующие файлы. Это лучшее совпадение с актуальным вопросом ОП.
Используя -type fсредство find, можно обрабатывать только файлы.
Опция -execпозволяет найти выполнить произвольную команду для файла. Первый вариант запускает команду один раз для каждого файла, а второй запускает как можно меньше команд, заменяя {}столько параметров, сколько возможно.
Конвейерная передача xargsиспользуется для формирования более сложных команд для каждого файла, чем это возможно с -exec. Опция -print0указывает findразделять совпадения с помощью ASCII NULL вместо новой строки и -0указывает xargsожидать ввода с разделением NULL. Это делает конструкцию канала безопасной для имен файлов, содержащих пробелы.
Смотрите man findдля более подробной информации и примеров.
После того, как команда find сделает удаление, удалит любой риск для места, встроенного в имя файла, ... Для дополнительной безопасности также рассмотрите возможность добавления -type fтолько для файлов.
Для поиска в моем домашнем каталоге (и использования GNU 'find' и 'xargs') я бы использовал:
find $HOME -name '*.swp' -print0 | xargs -0 rm -f
Использование ' -print0' и ' -0' означает, что имена будут разделяться символами ASCII NUL '\ 0', и это будет обрабатывать пути к файлам с пробелами и т. Д. В именах. Если вы считаете, что в вашем каталоге могут быть каталоги (или файлы устройств, или FIFO, или другие не-файлы), заканчивающиеся на «.swp», вы можете добавить « -type f» для «поиска». Если у вас есть только каталоги, приведенная выше команда не сможет удалить их с шумом.
Ответы:
Удалите все файлы * .swp из текущего каталога, используйте
find
команду в одной из следующих форм:find . -name \*.swp -type f -delete
-delete
Опция означает , что найти непосредственно удалить соответствующие файлы. Это лучшее совпадение с актуальным вопросом ОП.Используя
-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
для более подробной информации и примеров.источник
find . -name '*.swp' -delete
После того, как команда find сделает удаление, удалит любой риск для места, встроенного в имя файла, ... Для дополнительной безопасности также рассмотрите возможность добавления
-type f
только для файлов.источник
Баш 4.0
источник
Для поиска в моем домашнем каталоге (и использования GNU 'find' и 'xargs') я бы использовал:
Использование '
-print0
' и '-0
' означает, что имена будут разделяться символами ASCII NUL '\ 0', и это будет обрабатывать пути к файлам с пробелами и т. Д. В именах. Если вы считаете, что в вашем каталоге могут быть каталоги (или файлы устройств, или FIFO, или другие не-файлы), заканчивающиеся на «.swp», вы можете добавить «-type f
» для «поиска». Если у вас есть только каталоги, приведенная выше команда не сможет удалить их с шумом.источник