在unix下,我想将所有具有特定扩展名的文件(所有excel文件)从所有子目录复制到另一个目录。我有以下命令:
cp --parents `find -name \*.xls*` /target_directory/
这个命令的问题是:
它也复制目录结构,我只想要文件(所以所有文件都应该在 /target_directory/ 中结束)
它不会复制文件名中带有空格的文件(很多)
这些问题有什么解决办法吗?
根据以上所有,我想出了这个版本。这个版本也适用于我的 mac 恢复终端。
find ./ -name '*.xsl' -exec cp -prv '{}' '/path/to/targetDir/' ';'
它将在当前目录中查找并递归地在所有子目录中查找具有 xsl 扩展名的文件。它会将它们全部复制到目标目录。
cp 标志是:
我有一个类似的问题。我使用以下方法解决了它:
find dir_name '*.mp3' -exec cp -vuni '{}' "../dest_dir" ";"
并在每个文件'{}'
上";"
执行副本。
我自己也必须这样做。我通过 cp 的 --parents 参数做到了:
find SOURCEPATH -name filename*.txt -exec cp --parents {} DESTPATH \;
find [SOURCEPATH] -type f -name '[PATTERN]' |
while read P; do cp --parents "$P" [DEST]; done
您可以删除 --parents 但如果多个文件具有相同的名称,则存在冲突的风险。