Вы можете использовать find
:
find input/ -type f -exec do_something {} \;
С man
страницы:
Утилита находкой рекурсивно спускается по дереву каталогов для каждого пути в списке, оценки выражение (состоящее из primaries
и operands
, перечисленных ниже) в терминах каждого файла в дереве.
Для ясности, вот еще некоторые детали из man
страницы о exec
и {}
:
-exec утилита [аргумент ...];
Истинно, если программа с именем utility возвращает нулевое значение в качестве статуса выхода.
Дополнительные утилиты могут быть переданы утилите. Выражение должно быть завершено точкой с запятой (;
). Если вы вызываете find из оболочки , вам может потребоваться указать точку с запятой, если оболочка в противном случае обрабатывала бы как оператор управления. Если строка {}
появляется в любом месте в имени утилиты или аргументах, она заменяется именем пути к текущему файлу. Утилита будет выполнена из каталога, из которого была выполнена находка. Утилита и аргументы не подлежат дальнейшему расширению шаблонов и конструкций оболочек.
Надеется, что это помогает :)
'найти вход/-типа е -exec do_something "$ файл"{} \;' бы этот код делать то, что я хотел тогда? – user1769925
Привет. '{}' является заполнителем для сопоставленного пути к файлу, поэтому вам не нужно указывать переменную. –