
我想運行一個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