名前にスペースが含まれるファイルを含むディレクトリがある場合、たとえば
$ ls -1 dir1
file 1
file 2
file 3
これらすべてを次のように別のディレクトリに正常にコピーできます。
$ find dir1 -mindepth 1 -exec cp -t dir2 {} +
ただし、の出力にfind dir1 -mindepth 1
はエスケープされていないスペースが含まれます。
$ find dir1 mindepth 1
dir1/file 1
dir1/file 3
dir1/file 3
のprint0
代わりに使用する場合print
、出力にはエスケープされていないスペースが含まれています。
$ find dir1 mindepth 1 -print0
dir1/file 1dir1/file 2dir1/file 3
を使用してこれらのファイルを手動でコピーcp
するには、スペースをエスケープする必要があります。しかし、私がコマンドを使用するか、コマンドの最後に関係なく、cp
の引数が来るとき、これは不要であるようです。find
+
\;
この理由は何ですか?
find..exec
それ自体で奇妙なファイル名を処理することができます。