mv,如果存在则重命名

mv,如果存在则重命名

我需要将大量图片集中到一个目录中。其中许多图片的文件名相同。

如果目标文件名已经存在,是否存在某个安全版本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>

答案2

move如果文件存在,命令将重命名文件。

安装

node install -g @gauravnumber/move

例子

move *.jpg dirname

链接至 repo

相关内容