在unix下,我想将所有具有特定扩展名的文件(所有excel文件)从所有子目录复制到另一个目录。我有以下命令:
cp --parents `find -name \*.xls*` /target_directory/
这个命令的问题是:
它也复制目录结构,我只想要文件(所以所有文件都应该在 /target_directory/ 中结束)
它不会复制文件名中带有空格的文件(很多)
这些问题有什么解决办法吗?
--parents正在复制目录结构,所以你应该摆脱它。
--parents
您编写、find执行和输出的方式被放到命令行上,这样cp就无法区分分隔文件名的空格和文件名中的 空格 。最好做类似的事情
find
cp
$ find . -name \*.xls -exec cp {} newDir \;
其中对找到cp的每个文件名执行find,并正确传递文件名。这是有关此技术的更多信息。
除了以上所有内容,您可以使用zsh并简单地输入
$ cp **/*.xls target_directory
zsh可以扩展通配符以包含子目录并使此类事情变得非常容易。
zsh