Переименование файлов, цикл

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Grih65kop
Сообщения: 145

Переименование файлов, цикл

Сообщение Grih65kop »

В директории находятся много файлов имена которых:

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

...
showthread.php?t=17.html
showthread.php?t=111.html
showthread.php?t=111&page=2.html
...


Подскажие, пожалуйста, как их можно привести к следующему читаемому виду:

17.html
111.html
111-2.html

Понимаю что нужно как то циклом (for a in .... ; do mv .... ; done), но вот не могу реализовать.
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Переименование файлов, цикл

Сообщение allez »

Попробуйте так:

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

ls | while read _file; do _newname=$(echo "$_file" | sed 's/showthread.php?t=//; s/&page=/-/'); mv -v "$_file" "$_newname"; done
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Переименование файлов, цикл

Сообщение drBatty »

Grih65kop писал(а):
04.09.2012 01:36
Понимаю что нужно как то циклом

не нужно

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

$ echo "showthread.php?t=17.html
showthread.php?t=111.html
showthread.php?t=111&page=2.html" | sed -rn 'h;s~^showthread\.php\?t=([0-9]+)(&page=([0-9]+))?(\.html)$~\1\n\3\4~;T;s/\n([^.])/\n-\1/;s/\n//;G;s/(.*)\n(.*)/mv "\2" "\1"/p'
mv "showthread.php?t=17.html" "17.html"
mv "showthread.php?t=111.html" "111.html"
mv "showthread.php?t=111&page=2.html" "111-2.html"
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21257
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Переименование файлов, цикл

Сообщение Bizdelnick »

rename 'showthread.php?t=' '' *.html && rename '&page=' '-' *.html
Это если у Вас линуксовый rename, конечно, а не перловый.
Upd. А с перловым так: rename 's/^[^?]*\?[^=]*=//;s/&[^=]*=/-/' *.html
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали: