コマンドを実行しfind
、コマンドが返すファイルを処理し、処理されたファイルの数をエコーして進行状況に関するアイデアを提供したいと思います。
今私のコマンドは(たとえば)次のようになります。
COUNT=0\; find . -name '*.*' -exec echo "$COUNT: \c" \; -exec echo {} \;
しかし、結果としてカウントはエコーされません(そしてそれを増やす方法もわかりません)。私はそれが私に次のようなものを与えたいと思います:
0: ./FileOne.txt
1: ./FileTwo.txt
...
205: ./FileTwoHundredAndFive.txt
答え1
実行されたコマンドはfind
独立しています。各コマンドは-exec
新しいコマンドを開始します。現在のカウントをどこか(ファイル)に保存せずに1つのコマンドから次のコマンドに転送する方法がないため、非常に遅いです。
ファイルを表示するたびに印刷内容を検索し、入力行数を数えるプログラムに出力をパイプできます。
find … -print -exec 'the stuff you want to do' | nl
バッファリングのために遅延した後、カウントが印刷されます。バラよりパイプラインでバッファリングをオフにするバッファリングがオフの場合。
stdbuf -oL -eL find … -print -exec 'the stuff you want to do' | nl