将嵌套文件夹的所有文件移动到其他文件夹但不覆盖

将嵌套文件夹的所有文件移动到其他文件夹但不覆盖

在我的以前的问题是我试图将所有文件推送到文件夹和子文件夹中。现在我可以使用以下命令:

 find MainFolder -type f -exec mv \{\} FinalFolder \;

现在,我想避免覆盖。可以吗?

谢谢。

答案1

如果有两个或多个文件的名称发生冲突,配方mv可能会覆盖这些文件。如果想避免这种情况,可以使用 cp 命令代替 mv 命令来附加版本号。

find MainFolder -type f -exec cp --backup=numbered \{\} FinalFolder \;

然后,如果重复文件发生冲突,则会在花括号中附加数字作为版本号

如果cp一直要求确认,可能是因为cp命令被别名为cp -ifore saftey。常见的初始化。在这种情况下,使用/bin/cp代替cp

运行后,原始目录结构仍会存在。如果您不想要它。rm -rf MainFolder当您确定完成后,请将其删除

答案2

您要找的是 的-n开关。摘自手册页:mv

-n, --no-clobber 不覆盖现有文件

将其放入查找脚本中将得到以下结果:

find MainFolder -type f -exec mv -n \{\} FinalFolder \;

相关内容