在bash中是否有一种查找文件、移动和重命名(如果需要)的方法?

在bash中是否有一种查找文件、移动和重命名(如果需要)的方法?,bash,ubuntu,Bash,Ubuntu,我有一个文件夹,谁有子文件夹。在它们里面我有.c、.cc、.ccp和.cxx文件。我正在尝试使用 find ~/dir2 -iregex '.*\.\(c\|cc\|ccp\|cxx\)$' -exec mv -i '{}' ~/destination \; 但它会问我是否要覆盖文件,所以如果我同意,我会丢失一些文件。我想重命名具有相同名称的文件,然后移动它们。有什么想法吗?编写一个脚本,检查目标文件是否已经存在,并首先重命名它。然后,您可以从-exec运行该脚本。使用-print而不是-ex

我有一个文件夹,谁有子文件夹。在它们里面我有.c、.cc、.ccp和.cxx文件。我正在尝试使用

find ~/dir2 -iregex '.*\.\(c\|cc\|ccp\|cxx\)$' -exec mv -i '{}' ~/destination \;

但它会问我是否要覆盖文件,所以如果我同意,我会丢失一些文件。我想重命名具有相同名称的文件,然后移动它们。有什么想法吗?

编写一个脚本,检查目标文件是否已经存在,并首先重命名它。然后,您可以从
-exec
运行该脚本。使用
-print
而不是
-exec
,然后将其输送到执行所需操作的
-r filename
循环中。
查找-读取时打印-r文件名;做完成
中的代码检查目标目录中是否已经存在该文件,重命名它,然后将
$filename
移动到目标目录。我希望您能够理解这些内容,并且您不希望我们为您编写脚本。