我需要将大量图片集中到一个目录中。其中许多图片的文件名相同。
如果目标文件名已经存在,是否存在某个安全版本mv
可以自动重命名文件,这样就pic1.jpeg
变成了类似这样pic1_2.jpeg
?
我可以编写自己的 Python 脚本,但必须有类似这样的脚本,这样我才能做到:
find . -type f -name *.jpg -exec mvsafe '{}' /targetpath/ \;
答案1
mv 已经支持此功能(至少在 Debian 中):
mv --backup=t <source_file> <dest_file>
如 mv(1) 手册页中所示:
--backup[=CONTROL]
make a backup of each existing destination file
The backup suffix is `~', unless set with --suffix or SIM‐
PLE_BACKUP_SUFFIX. The version control method may be selected via the
--backup option or through the VERSION_CONTROL environment variable.
要使--backup=t
“制作编号备份”的意思成立,请按如下方式调用:
env VERSION_CONTROL=numbered mv --backup=t <source_file> <dest_file>
(dest_file 当然可以是目录)。
编辑:在更高版本中(至少是 GNU coreutils 8.22,但可能已经更早了),你可以简单地写
mv --backup=numbered <source_file> <dest_file>