在unix下,我想把所有子目录下所有具有一定扩展名的文件(都是excel文件)复制到另一个目录下。我有以下命令:
cp --parents `find -name \*.xls*` /target_directory/
这个命令的问题是:
它也复制了目录结构,我只想要文件(所以所有文件都应该在/target_directory/中结束)
它不会复制文件名中有空格的文件(很多)
这些问题有什么解决方案吗?
最佳答案
--parents
正在复制目录结构,所以你应该去掉它。
按照您编写此代码的方式,find
将执行,并将输出放在命令行上,这样 cp
就无法区分分隔文件名,以及文件名中的空格。最好做类似的事情
$ find . -name \*.xls -exec cp {} newDir \;
其中 cp
对 find
找到的每个文件名执行,并正确传递文件名。 Here's more info关于这项技术。
您可以使用 zsh 而不是以上所有内容并简单地输入
$ cp **/*.xls target_directory
zsh
可以扩展通配符以包含子目录,并使这类事情变得非常容易。
关于bash - 从所有子目录中复制具有特定扩展名的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15617016/