如何复制文件而不覆盖Bash脚本中的任何文件

时间:2015-01-30 07:26:41

标签: bash find overwrite cp

我正在尝试编写一个脚本,找到我所有的.jpg文件,并复制它们做一个新目录。它目前看起来像这样:

find ~/Pictures -iname \*.jpg -exec cp {} ...newDirectory \;    

问题是我的一些旧文件与新文件的名称相同,当IMG _ ####重置为0001并重新开始计数时。

有没有办法找到.jpgs和副本而不覆盖文件?理想情况下,在此过程中为他们提供一个新名称。

修改

我最终了解了rsync,它以自己的方式完成了我正在寻找的东西。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

-n使用cp参数,表示:不要覆盖现有文件。

要防止相同的名称,您可以将所有名称命名为唯一名称。 例如:

$ touch screenshot.jpg
$ cp screenshot.jpg screenshot-$(date "+%s").jpg

所以基本上,将要复制的新文件大量重命名为相同的名称+日期。 这将使它们与已经存在的东西不同,旧的未命名或(如果你稍后重复)将有不同的日期。