Подтвердить что ты не робот

Bash script прочитать все файлы в каталоге

Как мне пройти через каталог? Я знаю, что есть for f in /var/files;do echo $f;done; Проблема в том, что он будет выплевывать все файлы внутри каталога все сразу. Я хочу пойти один за другим и иметь возможность что-то сделать с переменной $f. Я думаю, что цикл while лучше всего подходит для этого, но я не могу понять, как писать цикл while.

Любая помощь будет оценена.

4b9b3361

Ответ 2

Чтобы записать его с помощью цикла while, вы можете сделать:

ls -f /var | while read -r file; do cmd $file; done

Основным недостатком этого является то, что cmd запускается в подоболочка, что вызывает определенные трудности, если вы пытаетесь для установки переменных. Основные преимущества заключаются в том, что оболочка не нужно загружать все имена файлов в память и нет глотания. Когда у вас много файлов в каталог, эти преимущества важны (это почему я использую -f на ls; в большом каталоге сам может выполнить несколько десятков секунд для запуска и -f скорости, которые в значительной степени. В таких случаях для файла в /var/ * ' скорее всего, завершится ошибкой glob.)

Ответ 3

Вы можете пойти без цикла:

find /path/to/dir -type f -exec /your/first/command \{\} \; -exec /your/second/command \{\} \; 

НТН