Приклад обробки групи файлів bash

Приклад обробки групи файлів за допомогою команди find

 user@host:~$ find $pwd -type f -name "*.html" -exec iconv --from-code=CP1251 --to-code=UTF-8 {} -o {}.new \;

або у циклі

 user@host:~$ for f in `ls -1 *.html`; do iconv --from-code=CP1251 --to-code=UTF-8 $f -o $f.new; done

Команда:

 user@host:~$ find $pwd -type f -name "*.html"

знаходить файли із назвою відповідною вказаному шаблону:

 ./menu.html
 ./m_edit.html
 ./hotkey.html
 ./m_help.html

Параметр -exec дозволяє виконувати для знайдених файлів інші команди bash . Наприклад:

 user@host:~$ find $pwd -type f -name "*.html" -exec echo '*'{}'*' \;

дає такий результат:

 *./menu.html*
 *./m_edit.html*
 *./hotkey.html*
 *./m_help.html*

Цикл все ж, зручніше (для мене :-) :

 for f in `ls -1 *.html`; do fn=${f%.*}; echo $fn; done

В циклі є можливість обробки як файлів так їхніх назв, є можливість використання не тільки параметрів, а і змінних, та виконання не однієї команди, а довільної послідовності команд.

Ось практичний приклад:

 for f in `ls -1 *.html`; do fn=${f%.*}; iconv --from-code=CP1251 --to-code=UTF-8 $f -o $fn.8; cat $fn.8 | sed -e 's/windows-1251/utf8/'>$fn.utf8; rm $f $fn.8; mv $fn.utf8 $f; done

Довгий рядочок. Але один!

Для зручності читання можна розділити на кілька рядків:

 for f in `ls -1 *.html`; do fn=${f%.*}; \
 iconv --from-code=CP1251 --to-code=UTF-8 $f -o $fn.8; \
 cat $fn.8 | sed -e 's/windows-1251/utf8/'>$fn.utf8; \
 rm $f $fn.8; mv $fn.utf8 $f; \
 done

=-=-=-=-=
Powered by Blogilo

Advertisements

Залишити відповідь

Заповніть поля нижче або авторизуйтесь клікнувши по іконці

Лого WordPress.com

Ви коментуєте, використовуючи свій обліковий запис WordPress.com. Log Out / Змінити )

Twitter picture

Ви коментуєте, використовуючи свій обліковий запис Twitter. Log Out / Змінити )

Facebook photo

Ви коментуєте, використовуючи свій обліковий запис Facebook. Log Out / Змінити )

Google+ photo

Ви коментуєте, використовуючи свій обліковий запис Google+. Log Out / Змінити )

З’єднання з %s

%d блогерам подобається це: