Переименование группы файлов

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
InventoR
ст. лейтенант
Сообщения: 1344
Зарегистрирован: 2006-12-10 19:43:25
Контактная информация:

Переименование группы файлов

Непрочитанное сообщение InventoR » 2009-01-24 0:17:03

Сабж.
Задача: переименовать группу файлов, были именна "бла бла", сделать "бла00001", ну и так далее.
Смотрел в нете, способов просто море, но думаю тут многие с таким сталкивались, и хотелось бы найти оптимальное решение.
Смотрел в портах, нашел rename, но мозг так и не понял, как это все работает.
ну вот и сказочке конец, кто слушал, тот молодец.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Гость
проходил мимо

Re: Переименование группы файлов

Непрочитанное сообщение Гость » 2009-01-24 4:51:10

Можно с xargs, можно и без. Для небольшого кол-ва файлов и где нет спецсиволов в именах можно вообще отделаться однострочником.

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

#! /bin/sh

# example:
# mv /d/ani/!seen/Black Lagoon/Black_Lagoon_23.DVD(H264.AAC)[KAA][2AA002B3].mkv /d/ani/!seen/Black Lagoon/shot_00029.mkv
# mv /d/ani/!seen/Black Lagoon/Black_Lagoon_24.DVD(H264.AAC)[KAA][A3529A8B].mkv /d/ani/!seen/Black Lagoon/shot_00030.mkv
# mv /d/ani/!seen/Figure 17/Figure 17 01 [Exiled-Destiny] [35C8428E].mkv /d/ani/!seen/Figure 17/shot_00031.mkv
# mv /d/ani/!seen/Figure 17/Figure 17 02 [Exiled-Destiny] [FC2A32F1].mkv /d/ani/!seen/Figure 17/shot_00032.mkv
# mv /d/ani/!seen/Figure 17/Figure 17 03 [Exiled-Destiny] [058834A4].mkv /d/ani/!seen/Figure 17/shot_00033.mkv

set -f # disable pathname expansion
#IFS='' # disable field splitting

jobs=1     # for parallel renaming
i=100000   # start with 00001
sep='\0\c' # filename can contain anything except NUL (from wikipedia)
#destdir=/var/tmp

find -s /d/ani -iname *.mkv |
while read line; do
    i=$((i + 1))
    echo -n $line
    echo -e $sep
    if [ $destdir ]
    then
	echo -n $destdir/shot_${i#1}.${line##/*.}
    else
	echo -n ${line%/*}/shot_${i#1}.${line##/*.}
    fi
    echo -e $sep
done |
xargs -0 -n2 -P$jobs echo mv

Гость
проходил мимо

Re: Переименование группы файлов

Непрочитанное сообщение Гость » 2009-01-24 5:16:37

или можно перловым скриптом.
http://felix.canids.net/plaintext/cmv
я им как-то сбрасывал все *.flac в одну папку, заменяя имя папки на имя файла с префиксом. Напр:

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

/d/muz/ll/Raison D'?tre/1997 - In Sadness, Silence and Solitude/02 - In Abscence of Light.flac -> /d/muz/ll/raison_d'?tre.1997.in_sadness,_silence_and_solitude.02.in_abscence_of_light.flac