Отправляет email-рассылки с помощью сервиса Sendsay

Сложное переименование файлов

Есть структура каталогов с "графическими файлами" приблизительно такого
типа:
/живопись/имя автора/имя файла.jpg

Подскажите, как можно сделать переименование файлов, чтобы они приняли вид:
/живопись/имя автора - имя файла.jpg

Типы файлов (".jpg", ".bmp", ".png", etc) могут быть разные и они,
естественно, должны остаться без изменений.

Существуют ли GUI-ёвые решения?

Ответить   Wed, 17 Aug 2005 13:01:19 +0400 (#419114)

 

Ответы:

середа 17 серпень 2005 12:01, Fay Ви написали:

Попробуй широко известный на ЛОРе :-) Krename
http://www.krename.net/

Ответить   Wed, 17 Aug 2005 13:24:13 +0300 (#419179)

 

Andrey Vorobets wrote:

Он такое не умеет. Или я что пропустил... ;)

Ответить   Sun, 21 Aug 2005 00:09:48 +0400 (#420837)

 

В сообщении от 1124272879 секунд после начала Эпохи Fay написал(а):

$ cd /живопись
$ for i in */*; do mv -i "$i" "`echo $i |sed 's|/| - |'`"; done

Не знаю.

Ответить   Konstantin Korikov Wed, 17 Aug 2005 14:12:32 +0300 (#419200)

 

Konstantin Korikov wrote:

Спасиба, то что нужно. Еще б понять, как оно работает.
Похоже, пора найти время для изучения bash... ;^\

Ответить   Sun, 21 Aug 2005 00:09:44 +0400 (#420838)

 

On Sun, Aug 21, 2005 at 00:09 +0400, Fay wrote:

Вот смотри:
кострукция
for i in */*;
перебирает по порядку все каталоги с файлами в текущем каталоге и
возвращает в переменной "i" пару каталог/имя_файла.
конструкция
do
...что_нибудь_сделать;
done
делает то что указано до тех пор, пока условие истино, т.е. пока еще
есть пары каталог/имя_файла.

mv -i "$i" "`echo $i |sed 's|/| - |'`";
а вот тут и происходит переименование:
"$i" - в переменной находится строка "каталог/имя_файла" (из
чего хотим переиеновать)
"`echo $1 | sed 's|/| - |'`" - это получение второй строки (во
что хотим переименовать)
вот такие кавычки `` заставляют оболочку выполнить заключенное в
них действие.
знак "|" (pipe - пайп) передает вывод команды echo $i (вывод
содержимого переменной "i" на терминал) на вход другой
sed 's|/| - | (читая строку со стандартного ввода, sed используя
регулярное выражение меняет знак каталога "/" на дефис "-" )
на выходе получаем типа такого:
mv autor/picture.jpg autor - picture.jpg

P.S. а учится всё таки необходимо :)
посмотри сюда
http://www.opennet.ru/docs/RUS/bash_scripting_guide/

Ответить   Mon, 22 Aug 2005 10:21:00 +0300 (#421491)