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

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

  • Как я могу использовать nohup, если сценарий оболочки занимает больше времени для запуска?
  • Почему эта команда отключает Linux
  • Как объединить несколько файлов в один?
  • Linux: Запомнить путь к USB-устройству
  • Ls с каталогом путь показывает файлы, но ls с шаблоном файла нет?
  • Почему меньше, когда у вас может быть больше? (Пейджеры на * Nix)
  • Узнайте, почему / как создается папка
  • В чем разница между «locate» и «find» в 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 затем принудительно удаляет выбранный файл (никогда не запрашивает перед удалением)

    Interesting Posts

    Могу ли я перейти на Windows 10 pro?

    Как я могу получить ссылку электронной почты на веб-странице, открытой в gmail вместо Outlook?

    Win8 downgrade – установка Windows 7 «Драйвер не найден»

    Изменение сочетания клавиш для переключения приложений в OS X

    Конвертер пакетных XLS в CSV

    Как анализировать использование диска в командной строке linux?

    Windows продолжает делать эти случайные «подключения устройства» и «отсоединение устройства»

    Включить пароль. Запустить как на Home Premium?

    Упорядочить окна в одном приложении на панели задач Windows 7

    Не удается подключиться к локальному серверу с других устройств (подключенных через Wi-Fi), когда сервер подключен через Wi-Fi

    Система очередей Linux

    Как я могу заменить функцию кнопки выключения на спящий режим?

    Как синхронизировать две папки в режиме реального времени в Windows 7?

    Как я могу преобразовать .mov в mp4?

    Как включить автоматический вход в систему Windows 7, когда я нахожусь в домене?

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