相关疑难解决方法(0)

'find -exec' 如何用空格传递文件名?

如果我有一个目录,其中包含一些名称有空格的文件,例如

$ 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,无论我是否使用+\;在命令末尾。

这是什么原因?

shell bash find quoting arguments

15
推荐指数
2
解决办法
1万
查看次数

标签 统计

arguments ×1

bash ×1

find ×1

quoting ×1

shell ×1