2016-11-03 62 views

回答

2

使用-exec选项:

find ./ -name "*pdf*" -exec cp -t . {} \+ 

{}被替换为当前正在处理的文件名。

从手册页find

-exec command {} +

...的命令行是通过在年底追加每个选定的文件名.. 内置命令行是建立在多少与xargs构建其命令行的方式相同。

注意使用-t(目标目录)选项(它是一个GNU扩展)。我们不能使用-exec cp {} . +,因为匹配的文件名被追加到命令行的末尾,而最后必须指定目的地。另一个解决方法是调用sh

find ./ -name "*pdf*" -exec sh -c 'cp "[email protected]" .' '' {} + 

我惯常躲过了+字符。请注意,您应该转义find语法的特殊字符以防止它们被shell扩展。特别是,在+之前可能不需要反斜杠,因为大多数shell将它解释为一个字符串(它不会被展开为不同的东西)。但是,你一定要逃出/报价;(适用命令对每个文件顺序):

find -name "*pdf*" -exec cp -f {} . ';' 
+0

第一个并没有为我(Linux操作系统,庆典46年3月4日)......错误工作''查找:对'-exec'''缺少参数......这个''find -name'* pdf *'-exec cp -t ./ {} \ +' – Sundeep

+1

@Sundeep,fixed –