小编典典

从所有子目录复制所有具有特定扩展名的文件

all

在unix下,我想将所有具有特定扩展名的文件(所有excel文件)从所有子目录复制到另一个目录。我有以下命令:

cp --parents `find -name \*.xls*` /target_directory/

这个命令的问题是:

  • 它也复制目录结构,我只想要文件(所以所有文件都应该在 /target_directory/ 中结束)

  • 它不会复制文件名中带有空格的文件(很多)

这些问题有什么解决办法吗?


阅读 74

收藏
2022-08-17

共1个答案

小编典典

--parents正在复制目录结构,所以你应该摆脱它。

您编写、find执行和输出的方式被放到命令行上,这样cp就无法区分分隔文件名的空格和文件名中的 空格 。最好做类似的事情

$ find . -name \*.xls -exec cp {} newDir \;

其中对找到cp的每个文件名执行find,并正确传递文件名。这是有关此技术的更多信息。

除了以上所有内容,您可以使用zsh并简单地输入

$ cp **/*.xls target_directory

zsh可以扩展通配符以包含子目录并使此类事情变得非常容易。

2022-08-17