2013-10-02 58 views
1

我正在做一個腳本,查找今天我正在(實質上)嘗試查找png,然後對它們使用tesseract並用序列號命名輸出。我試圖做到這一點如下。使用Find查找增量-exec

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

正方體工作得很好,在這一範圍內,但我不能讓我的計數變量遞增,所以它只是停留在零。誰能幫我嗎?

非常感謝提前。

回答

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命令,該命令簡單地計數行數,即處理的文件數量。

需要注意的是,如果您的文件名包含換行符,那麼它們可能每行佔用不止一行。但是誰把換行符放在文件名中? ;-)