Типичные механизмы выглядят так:
for f in glob; do command $f ; done
Я часто запускаю команды вроде: for f in *; do echo -n "$f " ; cat $f ; done
, чтобы просмотреть содержимое всех файлов в каталоге. (Особенно хорошо с каталогами в стиле /proc/sys/kernel/
, где все файлы имеют очень короткое содержание.)
или
find . -type f -exec command {} \;
или
find . -type f -print0 | xargs -0 command parameters
Что-то вроде find . -type f -exec file {} \;
или find . -type f -print0 | xargs -0 file
(работает, только если команда принимает несколько имен файлов во время ввода).
Конечно, если программа принимает несколько аргументов имени файла (например, cat
или more
или аналогичные инструменты оболочки Unix) и все файлы находятся в одном каталоге, вы можете очень легко запустить: cat *
(показать содержимое всех файлов в каталоге) или cat *.*
(показать содержимое всех файлов с точкой в имени файла).
Если вам часто требуется «все файлы во всех [под] * каталогах», вам может пригодиться опция zsh **/
: ls -l **/*.c
покажет вам foo/bar/baz.c
и /blort/bleet/boop.c
сразу , Отличный инструмент, но я обычно не против написания командного эквивалента find
, просто он мне не нужен часто. (И zsh не везде установлен, поэтому в будущем использование его функций может разочаровать.)