想像する:
$ tree .
.
├── x1.txt
├── x2.txt
└── x3.txt
0 directories, 3 files
$ find . -name "x1.txt" -prune -o -name "*.txt"
./x1.txt
./x2.txt
./x3.txt
$ find . -name "x1.txt" -prune -o -name "*.txt" -print0
./x2.txt./x3.txt
-print0
ここでは、これが検索結果に影響を与えることがわかります。混乱してください。
なぜ印刷されない-print0
のですか?find ...
x1.txt
なぜ印刷さ-print0
れないのですか?find ...
x1.txt
ベストアンサー1
find
-prune
(または以外の-quit
ジョブが指定されていない場合に使用されます)のデフォルトジョブはです-print
。
find . -name "x1.txt" -prune -o -name "*.txt"
-print
すべての場合において暗黙的:
find . -name "x1.txt" -prune -print -o -name "*.txt" -print
またはより正確には、
find . \( -name "x1.txt" -prune -o -name "*.txt" \) -print
追加すると-print0
デフォルト値が削除されます。
find . -name "x1.txt" -prune -o -name "*.txt" -print0
「名前が一致する場合はx1.txt
切り取り、そうでない場合は一致する場合は*.txt
NULLターミネータを使用して印刷します」を意味します。