На самом деле это единственный раздел про unix на этом форуме
Модераторы: /dev/random , Модераторы разделов
Grih65kop
Сообщения: 145
Сообщение
Grih65kop » 04.09.2012 01:36
В директории находятся много файлов имена которых:
Код: Выделить всё
...
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
Сообщение
allez » 04.09.2012 05:51
Попробуйте так:
Код: Выделить всё
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
Сообщение
drBatty » 04.09.2012 08:05
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"
Bizdelnick
Модератор
Сообщения: 21257
Статус: nulla salus bello
ОС: Debian GNU/Linux
Сообщение
Bizdelnick » 04.09.2012 10:34
rename 'showthread.php?t=' '' *.html && rename '&page=' '-' *.html
Это если у Вас линуксовый rename, конечно, а не перловый.
Upd. А с перловым так: rename 's/^[^?]*\?[^=]*=//;s/&[^=]*=/-/' *.html
Пишите правильно:
в консоли
вк у́пе (с чем-либо)
в о бщем
воо бще в течение (часа)
новичо к
ню анс
по у молчанию приемле мо
проблем а
пробо вать
траф ик