如何将结果传递给CP,使“带空格的文件名”起作用

时间:2013-09-10 16:57:50

标签: bash

我正在尝试将具有特定附件的文件复制到另一个目录,并保留其相对路径。从我呼吁的原始顶部路径开始:

cp --parents `find . -name \*.pdf -print` /new_path/

我相信这有效;但是,只有找到的文件名称中没有空格。

我也尝试过:

cp --parents `find . -name \*.pdf -print0` /new_path/

这显然不起作用,因为没有新行字符cp收到错误的名称。

是否可以用引号括住查找结果?

2 个答案:

答案 0 :(得分:10)

试试这个:

find . -name \*.pdf -print0 | xargs -0 -n 1 -Ifoo cp --parents foo /new_path/

或者

find . -name \*.pdf -exec cp --parents {} /new_path/ \;

答案 1 :(得分:2)

另一种方式。这会将一次调用中的所有文件复制为cp的多个参数。

find . -name '*.pdf' -exec cp --parents -t /new_path '{}' '+'