打印并更新 find 中的变量

打印并更新 find 中的变量

我想运行一个find命令并处理它返回的文件,同时还回显所处理的文件的计数,以便让我了解其进度。

现在,我的命令是(作为示例):

COUNT=0\; find . -name '*.*' -exec echo "$COUNT: \c" \; -exec 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

相关内容