Страница 1 из 1

Пакетное переименование файлов в Linux

Добавлено: 06 окт 2021, 12:37
Kodla
Итак, у нас есть куча файлов, среди которых надо навести порядок. Для этого сделаем групповое переименование.

Rename

Утилита rename входит в стандартную поставку Debian, так что начнем с нее.

Код: Выделить всё

rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
-v отобразить имена успешно переименованных файлов.

-n отобразить список файлов, которые будут переименованы, без переименования в итерации.

-f перезаписать уже существующие файлы.

perlexpr — шаблон для переименования.

Для того, чтобы выполнить переименование файлов согласно условию, выполним команду:

Код: Выделить всё

# rename 's/.sh/.sh.bak/g' *.sh
Рассмотрим perlexr подробнее:

s=указывает, что требуется замещение.

/.sh/=Строка, которую будем замещать.

/.sh.bak/ = строка, на которую будем замещать

g=global, будем замещать все найденные вхождения.

С помощью rename можно быстро изменить регистр файлов. Например поднимем регистр файлов из примера:

Код: Выделить всё

# rename ‘y/a-z/A-Z/’ *
MMV

mmv — программа для массового перемещения, переименования, копирования, объединения файлов.

По умолчанию она не включена в состав Debian. Поставим ее:

Код: Выделить всё

# apt-get install mmv
Наша задача решается одной строкой:

Код: Выделить всё

# mmv \*.sh \#1.sh.bak
MV

Теперь решим нашу задачу стандартной командой mv. Для этого нам прийдется немного попрограммировать в bash.

Код: Выделить всё

for i in *.sh;

do mv $i `basename $i sh`sh.bak;

done
Попробуем усложить задачу. Например у нас есть куча файлов JPG:

1234234.jpg

e456567657.jpg

234df34.jpg



Мы хотим привести их к следующему виду:

file1.jpg

file2.jpg

file3.jpg



Пример скрипта:

Код: Выделить всё

j=0;

for i in *.jpg;

do let j+=1;

mv $i file$j.jpg ;

done
Midnight Commander

В любимом многими mc, процесс переименования по маске выполняется просто и непринужденно в два действия.

1. Через + выбираем файлы по маске *.sh

2. Нажимаем F6 и в destination указываем *.sh.bak

Все примеры, приведенные выше, так или иначе работают во всех Linux, BSD, Mac OS, если стоят соответствующие утилиты.