使用Find -exec增加

时间:2013-10-02 00:41:28

标签: linux bash find increment

我正在使用今天发现的脚本,其中我(基本上)试图找到png,然后在它们上使用tesseract并使用序列号命名输出。我试着这样做。

#!/bin/bash
count=0
find /home/mine/Pictures -iname "*.png" -exec tesseract {} /home/mine/Temporary/test/$count \; -exec bash -c count=$((count+1)) \;

Tesseract在这个上下文中运行得很好但是我不能让我的计数变量增加,所以它只是保持为零。任何人都可以帮助我吗?

非常感谢提前。

1 个答案:

答案 0 :(得分:1)

-exec将在新的bash进程中多次运行此bash命令。 Bash变量仅在它们所属的bash进程中具有范围。所以每次-exec启动另一次bash时,$ count将重新开始为0。

我假设你只是想计算处理的文件数量。我想你可以这样做:

find /home/mine/Pictures -iname "*.png" -exec tesseract {} /home/mine/Temporary/test/$count -print | wc -l

这应该打印出新行上找到的每个文件名。此输出通过管道传送到wc -l命令,该命令只计算行数,即处理的文件数。

需要注意的是,如果您的文件名包含换行符,则每个文件名可能占用多行。但谁将换行符放在他们的文件名中? ; - )