使用-exec {}查找,有没有一种方法来计算总数?
我正在使用一个类似这样的命令:
find . -name "*.php" -exec chmod 755 {} \; 虽然,我不使用chmod,但我正在使用不同的命令,我不会在这里列出。 这个命令工作正常。 但是,有数以千计的文件和目录需要操作,这个操作需要一些时间。 我想知道是否有一种方式来显示操作完成时的某种总数? 也许是修改文件的计数?
我能想到的唯一的事情就是做一些事情:
 find . -name "*.php" -exec chmod 755; echo "+"; {} \; 
这会工作吗? 至less我们可以看到发生了一些事情…任何人都有更好的build议?
这工作:
 $ find . -name "*.php" -exec chmod 755 {} \; -exec /bin/echo {} \; | wc -l 
 你必须包含第二个-exec /bin/echo才能工作。 如果find命令没有输出,那么wc没有input来计算行数。 
 您可以使用一个find命令链接多个-exec命令。 其语法是: 
 find . -exec cmd1 \; -exec cmd2 \; -exec cmd3 \; 
在你的情况下,这将是这样的:
 find . -name '*.php' -exec chmod 755 {} \; -exec echo '+' \; 
虽然你有一些其他的select。 您可以将输出redirect到一个文件:
 find . -name '*.php' -exec chmod 755 {} \; > logfile.txt 
 或者,您可以使用tee ,这将允许您将输出写入日志文件, 并仍然输出到屏幕。 我觉得这很有用,因为连续stream输出到屏幕让我知道命令仍在运行(不会崩溃或挂起),我仍然有日志文件以供参考。 
 find . -name '*.php' -exec chmod 755 {} \; | tee logfile.txt wc -l logfile.txt // prints the lines in the file grep -c '^+$' logfile.txt // prints the lines containing a single '+' 
 find . -name "*.php" -exec chmod 755 {} + -printf '.' | wc -c 
如果你使用+而不是“;”,find会尝试并行处理许多文件的chmod 755。
您可以在第一个命令之后执行其他命令,例如在这里打印一个点,并在最后对点进行计数。
你可以使用xargs和pv 。 可能是:
 find . -name "*.php" | pv --line-mode | xargs chmod 755 
注意:这只有在你的* .php文件的path或名称中没有空格或其他奇数字符时才会起作用。
 使用-exec选项查找将为每个find的文件启动一个subprocess。 你可以使用像find . -name '*.php' | xargs chmod 755这样的xargs来加快速度find . -name '*.php' | xargs chmod 755 find . -name '*.php' | xargs chmod 755  find . -name '*.php' | xargs chmod 755 –  chmod只启动一次。