たとえば、
html ディレクトリ以下のすべての .html 拡張子を持つファイルの行数を表示する。
ただし、行数を表示するたびに1秒待つ (重い処理を想定)
find で処理するためには、よくこんな感じで処理してました。
find html -name "*.html" -printf "wc -l %p; sleep 1" | shfind コマンドが、以下のようなスクリプトを生成してくれるので、
wc -l html/aaa.html; sleep 1それをパイプで sh に渡します。
wc -l html/bbb.html; sleep 2
...
短い場合はこれでいいんですが、ファイル数が多いなどの時間がかかる場合は
並列処理したくなります。
そこで parallel.
上と同じことを 10 並列でする場合は、以下のような感じ
parallel -j 10 -i sh -c "wc -l {}; sleep 1" -- `find html -name "*.tex"`-- 以下のリストを順番に {} に代入して、並列で実行してくれます。
0 件のコメント:
コメントを投稿