Linux查找同名文件并将其复制到目标文件夹不会覆盖

Linux查找同名文件并将其复制到目标文件夹不会覆盖,linux,find,cp,Linux,Find,Cp,我想查找并复制一个文件夹中带有*.jpg的所有文件,包括其子文件夹到另一个文件夹 我用 但它会覆盖同名文件 例如,在/temp/6453/中,有test(1).jpgtest(2).jpg和文件夹1,在/temp/6453/1/中,也有同名的文件test(1).jpgtest(2).jpg 如果使用上述命令,则只有两个文件test(1).jpgtest(2).jpg在/tempL/中,它无法将所有文件复制到/tempL/ 我想要的是将所有文件复制到/temp/,当存在相同的文件名时,只需重命名它

我想查找并复制一个文件夹中带有
*.jpg
的所有文件,包括其子文件夹到另一个文件夹 我用

但它会覆盖同名文件

例如,在
/temp/6453/
中,有
test(1).jpg
test(2).jpg
和文件夹1,在
/temp/6453/1/
中,也有同名的文件
test(1).jpg
test(2).jpg

如果使用上述命令,则只有两个文件
test(1).jpg
test(2).jpg
/tempL/
中,它无法将所有文件复制到
/tempL/

我想要的是将所有文件复制到
/temp/
,当存在相同的文件名时,只需重命名它们,如何

我想要的是将所有文件复制到/temp/,当存在相同的文件名时,只需重命名它们,如何

1) 如果您不知道覆盖
cp--backup
将为您提供现有文件的备份,那么使用
--suffix
选项
cp
,您还可以指定用于备份的后缀

2)
--
cp
的父项
选项将保留目录树,即文件夹1中的文件将复制到新创建的文件夹1中

3) 如果要自定义重命名处理,则不能仅使用
cp
命令。为它编写脚本并调用它来处理
查找

安装“GNU parallel”的结果,并使用:

我认为使用xargs也可以使用同样的方法,但是学习并行对我来说太神奇了,它为我们提供了许多漂亮的解决方案


我建议在
cp
之前使用
echo
来测试您的命令

cp*.jpg PUT\u DESTINATION_PATH@OmidCompSCI请仔细阅读这个问题。诚然,它的措辞可能会更好,但很明显,OP希望重命名任何源目录中具有相同名称的文件。您的建议不重命名源子目录,也不递归源子目录。@kaylum,对不起,我没有100%理解它,也不确定递归是否使用-r?@OmidCompSCI
-r
确实用于递归目录。但是,除非源是目录,否则它没有效果<代码>*。jpg
不是目录。如果你不明白这个问题,那么最好先要求澄清。@kaylum啊,明白了,谢谢你的澄清。很抱歉,我无法回答这个问题,但我期待着看到答案!也可以尝试
--试运行
而不是
echo
。它也适用于诸如'seq 10 | parallel'ls{}| | echo Not found{}'之类的命令`
find /tempL/6453/ -name "*.jpg" |  xargs  -I  '{}' cp {} /tempL/;
find /tempL/6453/ -name "*.jpg" | parallel 'cp {} ./dest-dir/`stat -c%i {}`_{/}'

{/}  ................. gets filename with no full path