解決策 1:
このトリックを使用すると、現在のフォルダーを表示できますが、プログレス バーは表示されません。申し訳ありません。
watch readlink -f /proc/$(pidof find)/cwd
解決策 2:
pv という小さなユーティリティ (パイプ視聴者) かもしれません ヘルプ。 Peteris Krumins による素晴らしい要約から:
パイプ ビューアーは、パイプラインを介してデータの進行状況を監視するための端末ベースのツールです。
pv はさまざまな方法で使用できます。ここで遊んでいるときは、パイプの直後に配置して、find によって生成された出力の進行状況を監視します (stdin をそのまま stdout に渡す必要があります)
find / -mtime -1h | pv > /dev/null
次のような出力が表示されます:
6.42MB 0:01:25 [31.7kB/s] [ <=> ]
(stdout を /dev/null にリダイレクトしたので、出力が飛び交うことなく進行状況バーが動作していることを確認できました。これはおそらく find の意図ではないため、それに応じて調整してください)
正直なところ、これが実際にうまく機能するかどうかはわかりません。上記のような「高価な」検索 (ルートからのトラバース) の場合、かなりうまく機能するように見えました。ディレクトリ ツリーのより深いノードにある単純なコマンドの場合、pv は惨めに失敗しました。これらのコマンドはすぐに結果を返すため、進行状況バーはおそらく意味がありません。
いずれにせよ、いろいろ試してみて、これが必要なものに対して機能するかどうかを確認してください。少なくとも、考える材料はあります。
解決策 3:
今日これを検索し、Google経由でここにたどり着きました。 OS X で長時間実行されている検索があり、どうやら watch
そこには存在しません。別の解決策は次のとおりです。
lsof -Fn -a -c find -d cwd +r 10
lsof
=開いているファイルのリスト-Fn
=ファイル/ディレクトリの名前を表示するだけです (「n」文字で始まる、完全なlsof
を好む場合はこれをスキップしてください) 出力-a
=Telllsof
すべてに一致する行のみを表示するには 条件 (デフォルトでは、any に一致する行が表示されます 基準)-c find
=find
という名前のプロセスによって開かれたファイル/ディレクトリを表示 (実際には、名前がfind
で始まるプロセス 、ただし大文字と小文字が区別されるため、Finder
表示されません)-d cwd
=FD (ファイル記述子) cwd (現在の作業ディレクトリ) を含む行を表示+r 10
=開いているファイルが見つからなくなる (検索が終了する) まで、10 秒ごとに出力を表示します
これにより、ディレクトリ find
が表示されます は 10 秒ごとに処理されているため、find
かどうかがわかります。 まだ機能しており、どこまで進んでいるか.
解決策 4:
find
を使用した並列検索の例があります man find
で .それを使用すると、すべてのアイテムに対して複数のチェックを実行し、どの条件が機能するかに応じて複数のアクションを実行できます。最初のチェックは、たとえば simple-print
です。 であるため、すべての名前が stdout に出力されます。 2番目のチェックは、あなたが望むことを行います。次のようなもの:
find /work \( -fprint /dev/stderr \) , \( -name 'core' -exec rm {} \; \)
2 番目のチェックでもファイル名を表示する必要がある場合は、-fprint /dev/stderr
を使用してそのうちの 1 つを stderr にリダイレクトできます。 .
解決策 5:
私の知る限り、そうではありません。実装するのは簡単ではありません。
... うーん。おそらく find <target dir> -type d
を実行するスクリプト 最初にリストを保存し、次に find <list item> -maxdepth 1 <rest of find parameters>
を実行する前に各ディレクトリをエコーします for ループ内。
動作をぼんやりと見ることができるのと引き換えに、/重大な/パフォーマンスの低下と交換していることに注意してください。