У меня есть куча файлов x1.jpg, x2.jpg, x3.jpg и т.д., Которые должны называться x001.jpg, x002.jpg, x003.jpg и т.д. Как я могу это сделать?
Редактировать: я использую Windows, но у меня установлен Cygwin.
У меня есть куча файлов x1.jpg, x2.jpg, x3.jpg и т.д., Которые должны называться x001.jpg, x002.jpg, x003.jpg и т.д. Как я могу это сделать?
Редактировать: я использую Windows, но у меня установлен Cygwin.
Для массового переименования файлов изображений в Windows (а также изменения размера, обрезки, преобразования и т.д.) Я часто использую IrfanView (Freeware)
Сигвин, сладкий.
for NEWNUM in $(seq -w 1 100)
do
OLDNUM=$(echo $NEWNUM | sed -e 's/^0*//')
echo $OLDNUM $NEWNUM
# mv x${OLDNUM}.jpg x${NEWNUM}.jpg
done
Это должно работать. Ну, кроме закомментированных мв. Флаг -w для seq означает «широкий», что означает, что начинать заполнять нулями следует при необходимости
Какая ОС? * nix имеет утилиту rename
командной строки, которая, похоже, предназначена именно для такого рода вещей.
Многократное или массовое переименование можно назвать пакетным переименованием.
Total Commander - файловый менеджер. Он имеет функцию пакетного переименования. Вы можете увидеть учебник там или там.
Irfan View - это браузер / редактор изображений. Пакетное переименование тоже. Вы можете увидеть учебник там.
Я предпочитаю Total Commander. У него есть клоны Linux, и они, вероятно, тоже могут переименовывать файлы.
Обе эти программы для Windows. Оба должны работать в Linux тоже путем эмуляции.
Более общий подход, чем rename
(которое доступно не для всех * nix), и потенциально допускающий некоторую креативность:
find . -name 'x*' | while read filename; do mv "$filename" $(echo "$filename" | sed -e 's/x/x00/'); done
В чистом виде:
for a in x?.jpg; do mv "$a" "${a/x/x00}"; done
for a in x??.jpg; do mv "$a" "${a/x/x0}"; done