在我的以前的问题是我试图将所有文件推送到文件夹和子文件夹中。现在我可以使用以下命令:
find MainFolder -type f -exec mv \{\} FinalFolder \;
现在,我想避免覆盖。可以吗?
谢谢。
答案1
如果有两个或多个文件的名称发生冲突,配方mv
可能会覆盖这些文件。如果想避免这种情况,可以使用 cp 命令代替 mv 命令来附加版本号。
find MainFolder -type f -exec cp --backup=numbered \{\} FinalFolder \;
然后,如果重复文件发生冲突,则会在花括号中附加数字作为版本号
如果cp
一直要求确认,可能是因为cp
命令被别名为cp -i
fore saftey。常见的初始化。在这种情况下,使用/bin/cp
代替cp
运行后,原始目录结构仍会存在。如果您不想要它。rm -rf MainFolder
当您确定完成后,请将其删除
答案2
您要找的是 的-n
开关。摘自手册页:mv
-n, --no-clobber 不覆盖现有文件
将其放入查找脚本中将得到以下结果:
find MainFolder -type f -exec mv -n \{\} FinalFolder \;