Как перебрать имена файлов, возвращаемые функцией find? - PullRequest
175 голосов
/ 08 марта 2012
x=$(find . -name "*.txt")
echo $x

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

Конечно, я могу разделить их дальшепустым, чтобы получить список, но я уверен, что есть лучший способ сделать это.

Так, каков наилучший способ циклически просмотреть результаты команды find?

Ответы [ 13 ]

0 голосов
/ 12 мая 2016

на основе других ответов и комментариев @phk, используя fd # 3:
(который по-прежнему позволяет использовать стандартный цикл внутри цикла)

while IFS= read -r f <&3; do
    echo "$f"

done 3< <(find . -iname "*filename*")
0 голосов
/ 18 июня 2015

find <path> -xdev -type f -name *.txt -exec ls -l {} \;

В этом списке будут перечислены файлы и предоставлена ​​подробная информация об атрибутах.

0 голосов
/ 18 июня 2015

Как насчет того, чтобы использовать grep вместо find?

ls | grep .txt$ > out.txt

Теперь вы можете прочитать этот файл, а имена файлов представлены в виде списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...