我必须将所有扩展名为 .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/ {} +