
Я хотел бы запустить find
команду и обработать возвращаемые ею файлы, а также вывести на экран количество обработанных файлов по мере ее выполнения, чтобы иметь представление о ходе выполнения.
Прямо сейчас моя команда (в качестве примера) такова:
COUNT=0\; find . -name '*.*' -exec echo "$COUNT: \c" \; -exec echo {} \;
Но в результате я не получаю счетчик для echo (и не могу понять, как его увеличить). Я бы хотел, чтобы он выдал мне что-то вроде:
0: ./FileOne.txt
1: ./FileTwo.txt
...
205: ./FileTwoHundredAndFive.txt
решение1
Команды, выполняемые с помощью, find
независимы. Каждая -exec
запускает новую команду. Нет способа передать текущий счетчик из одной команды в другую, кроме как сохранить его где-то (в файле), что было бы очень медленно.
Вы можете заставить find печатать что-то каждый раз, когда он видит файл, и передать вывод в программу, которая подсчитывает входные строки.
find … -print -exec 'the stuff you want to do' | nl
Это выведет счетчики после задержки из-за буферизации. СмотритеОтключить буферизацию в каналепри отключении буферизации.
stdbuf -oL -eL find … -print -exec 'the stuff you want to do' | nl