列印並更新 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

相關內容