mv, переименуй если есть
Мне нужно собрать много изображений в один каталог. Многие из этих изображений имеют одинаковые имена файлов.
Есть ли безопасная версия mv
который автоматически переименует файлы, если целевое имя файла уже существует, так что pic1.jpeg
становится чем-то вроде pic1_2.jpeg
?
Я мог бы написать свой собственный скрипт на Python, но там должно быть что-то вроде этого, чтобы я мог сделать:
find . -type f -name *.jpg -exec mvsafe '{}' /targetpath/ \;
2 ответа
mv уже поддерживает это из коробки (по крайней мере, в Debian):
mv --backup=t <source_file> <dest_file>
Как видно на man-странице 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, конечно, может быть каталогом).
move
команда переименовывает файл, если файл существует.
Установить
node install -g @gauravnumber/move
Пример
move *.jpg dirname