私はしばしば次のようなコマンドを書きたいと思います (zsh
関連する場合は で):
find <somebasedirectory> | \
grep stringinfilenamesIwant | \
grep -v stringinfilesnamesIdont | \
xargs dosomecommand
(または grep のより複雑な組み合わせ)
近年、 はスイッチfind
を追加し-print0
、xargs は を追加しまし-0
た。これにより、代わりにファイル名を null で終了することにより、名前にスペースを含むファイルをエレガントな方法で処理できるようになり、これが可能になります。
find <somebasedirectory> -print0 | xargs -0 dosomecommand
ただし、grep
(少なくとも私が持っているバージョン、UbuntuのGNU grep 2.10)には、ヌル終了行を消費して生成するのに相当するものはないようです。それは持っていますが、grepでファイルを直接検索するときに名前を出力--null
するために使用することにのみ関連しているようです。-l
grep で使用できる同等のオプションまたはオプションの組み合わせはありますか? または、単に find-regex
や Perl を使用してコマンドのパイプを表現する簡単でエレガントな方法はありますか?