在unix下,我想将所有子目录中具有特定扩展名(所有excel文件)的所有文件复制到另一个目录。我有以下命令:复制所有子目录中具有特定扩展名的所有文件
cp --parents `find -name \*.xls*` /target_directory/
这个命令的问题是:
它复制的目录结构,以及,我只希望这些文件(这样所有文件都应该在结束了/目标目录/)
它不会复制名带有空格的文件(这是不少)
针对这些问题的任何解决方案?
在unix下,我想将所有子目录中具有特定扩展名(所有excel文件)的所有文件复制到另一个目录。我有以下命令:复制所有子目录中具有特定扩展名的所有文件
cp --parents `find -name \*.xls*` /target_directory/
这个命令的问题是:
它复制的目录结构,以及,我只希望这些文件(这样所有文件都应该在结束了/目标目录/)
它不会复制名带有空格的文件(这是不少)
针对这些问题的任何解决方案?
--parents
正在复制目录结构,所以你应该摆脱这一点。
你写这样的方式,find
执行,并且输出被放置到命令行这样cp
不能空格分开的文件名和空间内的文件名进行区分。这是更好地做类似
$ find . -name \*.xls -exec cp {} newDir \;
其中
cp
为每个文件名是
find
发现执行,正确传递文件名
。 Here's more info关于这项技术。
而不是所有上述情况,你可以使用zsh和简单的输入
$ cp **/*.xls target_directory
zsh
可扩展通配符包含子目录,并让这样的事情很容易。
对不起,我的bash文盲,但你是什么意思的“斌”? – Abdel 2013-03-25 14:11:40
投入垃圾桶。 – bmargulies 2013-03-25 14:12:15
是的。 'bin it'意味着把它扔掉。现在修改:-) – 2013-03-25 14:12:45
我有类似的问题。我解决了它使用:
find dir_name '*.mp3' -exec cp -vuni '{}' "../dest_dir" ";"
的'{}'
和";"
执行上的每个文件的副本。
从以上所有,我想出了这个版本。 这个版本也适用于我在mac恢复终端。
find ./ -name '*.xsl' -exec cp -prv '{}' '/path/to/targetDir/' ';'
它会查看当前目录,并递归查看所有子目录中带有xsl扩展名的文件。它会将它们全部复制到目标目录。
CP标志是:
这与我在SSH进入Bluehost时所做的相同。 – Plummer 2016-12-01 19:13:30
我也有自己做这个。我是通过cp的--parents参数完成的:
find SOURCEPATH -name filename*.txt -exec cp --parents {} DESTPATH \;
find'exec mv'怎么样? – fedorqui 2013-03-25 14:10:14