*Drive*- Здесь рулят padonki
https://drivesource.ru/

Пакетное переименование файлов в Linux
https://drivesource.ru/viewtopic.php?f=15&t=1651
Страница 1 из 1

Автор:  Kodla [ 06 окт 2021, 13:37 ]
Заголовок сообщения:  Пакетное переименование файлов в Linux

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

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, если стоят соответствующие утилиты.

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/