Мне нужно собрать много изображений в один каталог. Многие из этих изображений имеют одинаковые имена файлов.
Есть ли безопасная версия mv
который автоматически переименует файлы, если целевое имя файла уже существует, так что pic1.jpeg
становится чем-то вроде pic1_2.jpeg
?
Я мог бы написать свой собственный скрипт на Python, но там должно быть что-то вроде этого, чтобы я мог:
find . -type f -name *.jpg -exec mvsafe '{}' /targetpath/ \;
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>