Linux, найти все файлы, соответствующие шаблону и удалить

Ищите все файлы (рекурсивно), которые имеют подчёркивание в имени своего файла, а затем удаляют их через командную строку.

4 Solutions collect form web for “Linux, найти все файлы, соответствующие шаблону и удалить”

Это самый безопасный и быстрый вариант:

find /path -type f -name '*_*' -delete 

Он не требует соединения и не разбивается, если файлы содержат пробелы или символы глобусов или что-то еще, что другие конструкторы задушили бы. Самое простое правило запомнить здесь – никогда не разбирать вывод вывода . И никогда не grep по именам файлов, если вы хотите что-то с ними сделать позже. Вы можете делать практически все, что можно find непосредственно.

См. Также: GNU find Manual – Удаление файлов

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

 find . -name '*_*' -exec rm -rf {} \; 

Если вам нужны только обычные файлы:

 find . -type f -name '*_*' -exec rm -f {} \; 

Хорошо, давайте сделаем это постепенно.

В качестве первого прохода это просто упражнение по передаче подстановочного символа команде find , не забывая процитировать его, и выполнение команды rm для каждого найденного файла:

 find ${BASE_DIR}/ -name '*_*' -exec rm {} \; 

Но, конечно, это ужасно неэффективно. Он запускает весь процесс rm для каждого отдельного файла. Таким образом, хотя мы могли бы взять короткий объезд через \+ , это не то место, где мы собираемся закончить, так что давайте возьмем более короткий путь и приведем xargs чтобы дополнить имена файлов в группы:

 find ${BASE_DIR}/ -name '*_*' -print | xargs rm 

Но у этого есть две дыры в безопасности. Во-первых, если любое найденное имя файла начинается с знака минус, rm будет рассматривать его как параметр командной строки, а не имя файла, и генерировать ошибку. (У версии -exec rm {} также есть эта проблема.) Во-вторых, имена файлов, содержащие пробелы, не будут корректно обрабатываться xargs . Итак, дальнейшая итерация – сделать это немного более пуленепробиваемым:

 find ${BASE_DIR}/ -name '*_*' -print0 | xargs -0 rm -- 

И, конечно, есть интерактивные функции rm которые вы, вероятно, не хотите:

 find ${BASE_DIR}/ -name '*_*' -print0 | xargs -0 rm -f -- 

Параметры -print0 и -0 не являются стандартными, но find GNU и xargs , а также find FreeBSD и xargs понимают их. Однако даже это является более эффективным. Нам не нужно создавать какие-либо дополнительные процессы. find GNU и FreeBSD s может одновременно вызвать системный вызов unlink(2) :

 find ${BASE_DIR}/ -name '*_*' -delete 

Помните, что в качестве последней превентивной меры, чтобы остановить вас, делая больше, чем вы предполагали в определенных обстоятельствах, файловая система может содержать не только обычные файлы:

 find ${BASE_DIR}/ -name '*_*' -type f -delete 

find . -type f -regex ".*_.*" | xargs rm -f

объяснение
-type f находит только файлы
-regex ".*_.*" Выбирает только файлы с подчеркиванием в них
xargs rm -f затем принудительно удаляет выбранный файл (никогда не запрашивает перед удалением)

  • Почему меньше, когда у вас может быть больше? (Пейджеры на * Nix)
  • Как объединить несколько файлов в один?
  • Автоматически отвечать «Да» при использовании apt-get install
  • Как удалить все, кроме 10 самых новых файлов в Linux?
  • Как искать рекурсивно для строки в linux?
  • Резервное копирование каталога программирования
  • DD от / dev / zero до / dev / null ... что на самом деле происходит
  • Как удалить очень большую папку (~ 40 ГБ) с большим количеством файлов в Linux
  • Сила сигнала регистрации в журналах маршрутизатора
  • Почему эта команда отключает Linux
  • Как установить g ++ 4.9.2 в Cent OS 6.5?
  • Interesting Posts

    Как извлечь tar-файл в Java?

    Android Studio – Импорт внешней библиотеки / Jar

    Нужно ли мне активировать Windows 8, если я использовал его раньше?

    Intel 3945ABG DPC шипы (звук заикание, мышь) в Windows 8.1

    Как удалить ограничения документа .pdf?

    Случайные ошибки при смене серии с использованием JFreeChart

    Как хранится плавающая запятая? Когда это имеет значение?

    Когда вы экспортируете документ в формате pdf в Word 2010, какая разница между публикацией стандартного и минимального размера?

    статическая ошибка переменной ссылки

    Как загрузить Sony Vaio E Series под управлением Windows 8 в безопасном режиме

    Как использовать стили второго уровня второго списка в Microsoft Word

    Как использовать class TextWatcher в Android?

    Как использовать шифрование / дешифрование 3DES в Java?

    Беспроводная медленная, но очень странная

    Ссылка. Что означает это регулярное выражение?

    Давайте будем гением компьютера.