如果我有一个目录,其中包含一些名称有空格的文件,例如
$ ls -1 dir1
file 1
file 2
file 3
Run Code Online (Sandbox Code Playgroud)
我可以成功地将它们全部复制到另一个目录,如下所示:
$ find dir1 -mindepth 1 -exec cp -t dir2 {} +
Run Code Online (Sandbox Code Playgroud)
但是,输出find dir1 -mindepth 1
包含未转义的空格:
$ find dir1 mindepth 1
dir1/file 1
dir1/file 3
dir1/file 3
Run Code Online (Sandbox Code Playgroud)
如果我使用print0
而不是print
,输出仍然包含未转义的空格:
$ find dir1 mindepth 1 -print0
dir1/file 1dir1/file 2dir1/file 3
Run Code Online (Sandbox Code Playgroud)
要使用 手动复制这些文件cp
,我需要对空格进行转义;但是当cp
的参数来自时,这似乎是不必要的find
,无论我是否使用+
或\;
在命令末尾。
这是什么原因?