URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9179
[ Назад ]

Исходное сообщение
"получить список файлов и обработать"

Отправлено awk_noob , 04-Июл-11 15:17 
Доброе время. есть папка, в ней файлы вида ./html/vsluhboard.cgi?az=printer_format&om=9126&forum=vsluhforumID9.html
Ну это собственно многочисленные сохраненные ветки отсюда, с опеннета. вот их хотелось переименовать хотя бы в виде 9126.html
В принципе если написать ls ./html/*.html | awk 'FS="=" {print $3}'
то на выходе получается 9126&forum т.е. уже почти хорошо, но если вставить туже команду в скрипт,
>cat decl.sh
>#!/bin/sh
>for i in ./html/*.html
>do
>a=`awk 'FS="=" {print $3}' $i`
>echo $a
>done

то на выходе совсем не тоCONTENT="text/html; "#000099"> #606060>></font>
<font color #606060>>минуты, но хотелось бы повысить скорость обработки. </font><p>Возможности перла и awk не сравнить, но у меня mawk 1.3.3 работает в среднем более  чем в 2 раза быстрее чем perl 5.6.1.<p> #606060>>если позволите, мне айпишник в число перевести надо (как inet_aton в </font>
<font color #606060>>char *host #606060>>прямой не сунуть? :-) </font>
<font color #606060>></font>
<font color #606060>>если позволите, мне айпишник в число перевести надо (как inet_aton в </font>
<font color #606060>>>если позволите, мне айпишник в число перевести надо (как inet_aton в </font>
<font color #606060>></font>
<font color

Не подскажете, как можно реализовать? лучше на шел, но перл и пр. тоже было бы хорошо. Заранее спасибо.


Содержание

Сообщения в этом обсуждении
"получить список файлов и обработать"
Отправлено Name , 04-Июл-11 17:29 
>[оверквотинг удален]
> <font color #606060>>char *host #606060>>прямой не сунуть? :-) </font>
> <font color #606060>></font>
> <font color #606060>>если позволите, мне айпишник в число перевести надо (как inet_aton
> в </font>
> <font color #606060>>>если позволите, мне айпишник в число перевести надо (как inet_aton
> в </font>
> <font color #606060>></font>
> <font color
> Не подскажете, как можно реализовать? лучше на шел, но перл и пр.
> тоже было бы хорошо. Заранее спасибо.

Командой "ls ./html/*.html | awk 'FS="=" {print $3}'", Вы обрабатываете входной поток, который в данном случае имеет вид "./html/*.html."
# Обрабатываете список имён файлов.
Командой "awk 'FS="=" {print $3}' $i", Вы указываете awk, что в качестве входных данных следует  использовать файл, имя которого указано в переменной $i.
# Обрабатываете содержимое файлов.
Для получение искомого имени "9126&forum" можно импользовать следующие конструкции.
for file in ./html/*.html; do file_new=${file%\=*}; file_new=${file_new##*=}; mv -v "${file}" "./html/${file_new}.html"; done

#!/bin/sh
for file in ./html/*.html;
do
a=`echo ${file} | awk -F= '{ print $3 }'`;
mv -v "${file} "./html/${a}.html";
done