查找所有扩展名为 .c .sh .cpp的文件并将它们复制到 My Desktop 中的目录中,如果有同名的文件,请重命



我必须将所有扩展名为 .c .sh .cpp的文件复制到桌面上的目录中,并重命名具有相同名称的文件。 如果我有两个名为 hello.cpp 的文件,请将名称更改为 hello1.cpp。

我已经试过了:

find /root  (-name *.cpp -o -name *.sh ) -exec cp {} /root/Desktop/myNewDir ; 

但我不断收到此错误:

cp: '/root/Desktop/mynewDir/hello.cpp' and '/root/Desktop/myNewDir/hello.cpp' are the same file

发生这种情况是因为您在/root上递归遍历并find复制同一文件。

如果你想坚持递归,那么从find的递归-prune/root/Desktop/myNewDir/

find /root/ -type d -name /root/Desktop/myNewDir/ -prune -o -type f 
( -name '*.cpp' -o -name '*.sh' ) -exec cp --backup=numbered 
-t /root/Desktop/myNewDir/ {} +

如果你不想要递归,这很容易:

find /root/ -maxdepth 1 -type f ( -name '*.cpp' -o -name '*.sh' ) 
-exec cp -t /root/Desktop/myNewDir/ {} +

相关内容

最新更新