find、xargs、およびgrepの組み合わせでエラーが発生する

find、xargs、およびgrepの組み合わせでエラーが発生する

エラーを発生させるコマンド:

$ find /mydir/tmp/*20151014* -print | xargs grep -l 'filesTransmitted=1'
bash: /usr/bin/find: The parameter or environment lists are too long.

同じタスクを実行するための最良のコマンドはありますか?

ベストアンサー1

ファイル(ディレクトリ?)名の拡張子であり、/mydir/tmp/*20151014*これがここで問題です。

シェルがワイルドカード名をリストに拡張する必要がないように、次のことを試してください。

find /mydir/tmp -name '*20151014*' -exec grep -l 'filesTransmitted=1' {} \;

あなたの検索は一致から始まるファイルまたはディレクトリ内のすべてのファイルを検索しますが、私の検索は下のどこからでも一致する名前を持つすべてのファイルを検索するため、検索とは/mydir/tmp/*20151014*若干異なります。これがお客様の要件を満たしていない場合は、ご提供ください。*20151014*/mydir/tmpサンプルファイルとそのディレクトリパスのコレクション。

おすすめ記事