Loccate(1) は出力をバッファリングします。

Loccate(1) は出力をバッファリングします。

私はlocate(1)小さな操作のためにGNU findutilsを使用していますが、出力をバッファリングしているようです。検索の出力を、検索が検索した行を処理する別の操作にパイプします。検索を実行するのに時間がかかる可能性があるため、検索は見つかったファイルを印刷すると思いましたが、検索は出力をバッファリングしているようです。

TTYで検索を実行すると、最初の一致がすぐに印刷され、残りの項目を見つけるのに10秒かかります。

逆に、検索を実行してパイプラインをcatとして実行すると、コマンド全体が完了するまで何も表示されません。

検索は出力をバッファリングしてオフにできないようです。

私が達成したいのは、いくつかのファイルを見つけてパイプ出力を介して見つかったらすぐにコマンドを実行することです。

locate something | xargs -n 1 do_something

ただし、xargsとdo_somethingはfindが完了するまで呼び出されません。

ベストアンサー1

もちろん、投稿直後に答えを見つけました。投稿時にstackexchangeが推奨する投稿

unbuffer(予想通り)問題が解決しました。

unbuffer locate something | xargs -n 1 do_something

コマンドの実行は、検索がコマンドを検索するのと同じくらい高速です。

おすすめ記事