GNUの検索:同じコマンドで-o(または)と-print0を使用すると、期待される結果は得られません。

GNUの検索:同じコマンドで-o(または)と-print0を使用すると、期待される結果は得られません。

要約:複数のパターンを一致させるために-print0オプションfind-oオプションを正しく組み合わせる方法は? (ユースケースが配信されますxargs -0

例:

find . -print0 -name "File*.dat" -o -name "Data*.txt"
find . -print0 -name "File*.dat" -o -print0 -name "Data*.txt"

両方とも戻るファイルごとディレクトリに。

find . -name "File*.dat" -o -name "Data*.txt" -print0

このリターンただ2番目のパターン()Data*.txtに一致するファイル。

これを正しく実行するにはどうすればよいですか、なぜこれが起こりますか?

ベストアンサー1

引用問題とグループ化の問題があります。"ワイルドカードマッチングのためにシェルを招待するには、「」を使用します。一致するファイルがある場合、または現在のディレクトリにある場合は、ワイルドカード文字が置き換えられます。代わりに" '"を使用してください。
グループ化は、()シェルエスケープを必要とする角括弧 ""で行われます。
あなたの命令は次のとおりです。

find . \( -name 'File*.dat' -o -name 'Data*.txt' \) -print0

読むman find

おすすめ記事