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

В оболочке BASH я хотел бы взять строки файла (например, pattern.txt ) и найти файлы в моей системе, имена которых содержат шаблоны в каждой строке моего файла. Итак, у меня есть следующий цикл

for pp in `cat pattern.txt`; do find ./ -iname "*${pp}*" -print0; done 

который не находит файлы, если существует первая строка в файле pattern.txt . Итак, как я могу исправить указанную выше командную строку?

Примечание. Каждая строка в моем файле содержит только символы [a-zA-Z].

3 Solutions collect form web for “Как я могу прокручивать строки файла и находить файлы, соответствующие каждой строке?”

Попробуй это:

 #!/bin/bash while IFS= read -r pp; do find . -iname "*${pp}*" -print0 done < /path/to/pattern.txt 

Не уверен, почему вы хотите -print0 , но я все равно оставил его. Возможно, вы пытаетесь xargs это на xargs ?

Вот безопасный и защищенный Windows способ поиска кучи шаблонов имен файлов, извлеченных из файла. Подход, который я выбрал, состоит в том, чтобы обработать список шаблонов в выражение find .

 find_expression=$(<pattern \ sed -e 's/^/-o\n-iname\n*/' \ -e 's/\r\?$/*/' | # turn each pattern into -o -iname *foo* tail -n +2) # remove spurious initial -o set -f # turn off globbing IFS=' ' # split only at newlines find . \( $find_expression \) -print0 set +f; unset IFS # restore defaults 

Ответ @SiegeX будет работать, но если у вас много файлов в файле шаблонов, это может стать медленным и неуклюжим. Вы можете получить гораздо лучшую производительность, используя другой инструмент, например:

 find . | grep -f pattern.txt 

Да, это было все.

  • Найдите строку (например, grep -q) только в одном разделе файла
  • Анализ файлов журнала с помощью sed -e. Нужно учитывать уникальные имена классов
  • Заменить кратчайшее совпадение строкового рисунка
  • Греп для числа в строке
  • Копировать только Конкретный текст файла в другой
  • Использование sed для консолидации разностного вывода
  • Печать регулярного выражения Sed в файл .txt
  • Grep для строки, а затем повторить строку из записи
  • Извлечение жетонов из строки текста
  • Скопируйте текстовые строки из файла и добавьте их в один и тот же файл с префиксом средней линии или удалите префикс средней строки
  • Сокращение порядка и вывод текста
  • Interesting Posts

    Как получить права root для конкретного пользователя, если у нас есть пароль root?

    Несколько приложений, которые записывают один и тот же файл в общем разделе NFS

    удалять повторяющиеся записи в одном столбце и линеаризовать значения в нескольких строках в одну строку

    Как вы отображаете цвета xterm с помощью putty / bash?

    Почему я не могу добавить правило iptables?

    Невозможные результаты pmap

    ipsec auto –status не работает в cronjob

    Как показать только общий размер файла конкретного расширения командой `du`

    Использование systemd для выполнения сценария перед отключением системы?

    Почему существует отдельный репозиторий пакетов для обновлений безопасности Debian?

    vipe misbehaving при замене процесса bash

    Duplicity: переключиться на "вторичную цепочку резервного копирования"

    Как администратор системы может заблокировать доступ к файлу в течение 24 часов?

    Как найти недостающие файлы между определенным диапазоном дат?

    Ошибочно ли эти ошибки пересылки BIND безопасны для игнорирования?

    Linux и Unix - лучшая ОС в мире.