OpenQuality.ru

Качество программного обеспечения

Качество программного обеспечения: в главных ролях

Лента  Радар  Блог  Опыт  
Разум  Видео  Заметки  Эпизоды


Швейцарский нож для охотника за файлами

Добрый день.

Театр начинается с вешалки, а разработка приложений – с подготовки текстовых файлов. Мы пишем код, задаем конфигурационные данные, анализируем результаты. Спрос рождает предложение, и потому инструментов для работы с файлами существует великое множество: от специализированных средств разработки и текстовых редакторов до языков программирования и компактных утилит. Рассмотрим такую задачу: рекурсивно пройти по файлам заданного каталога и заменить в них все вхождения “ISASaddr” на “WebProxyURL”. Вот пара-тройка вариантов решения:

Однострочник Perl + find:

perl -p -i -e 's/ISASaddr/WebProxyURL/g' `find /home/work/ca/ -name *.cfg`

Или, к примеру, grep + xargs + sed:

cd /home/work/ca;grep -rl ISASaddr . |xargs sed -i -e 's/ISASaddr/WebProxyURL/'

Или PowerShell-цепочка в среде Windows:

get-childitem "d:\work\ca" -recurse | select-string "ISASaddr" -list |% { (get-content $_.Path) |% { $_ -replace "ISASaddr", "WebProxyURL" } | set-content $_.Path }

Swiss KnifeЧем больше опыта работы в командной строке, тем эффективнее решаются подобные задачи. В то же время, иногда такие решения выглядят как залп пушкой по воробьям: есть маленькие операции, которые хочется провести “в лоб” – просто и быстро. Особенно, если это однократная операция при анализе поведения системы или прототип автотеста. Хочется? Знакомьтесь, Swiss File Knife – швейцарский ножик для работы с файлами. Кросс-платформенный (проверено на SLES 10, Ubuntu 8.10 и Win 2k3). Что он умеет? Для начала вернемся к исходной задаче. Вот как ее можно решить:

sles54:/tmp # ./sfk-linux-lib5.exe replace -pat /ISASaddr/WebProxyURL/ -dir /home/work/ca -file .cfg -yes

А вот еще несколько простых примеров. В заданном каталоге найти три самых больших файла:

sles54:/tmp # ./sfk-linux-lib5.exe list -big=3 -dir /usr/bin

Или два самых свежих:

sles54:/tmp #./sfk-linux-lib5.exe list -late=2 -pure /tmp

Или пять самых старых:

sles54:/tmp # ./sfk-linux-lib5.exe list -old=5 -pure /tmp

Или три самых маленьких:

sles54:/tmp # ./sfk-linux-lib5.exe list -small=2 -pure /tmp

Задачка чуть посложнее: отфильтровать файл, исключив строки, содержащие дату в формате MMM dd HH:mm:ss (Feb 24 04:15:39) и слово reporting:

 sles54:/tmp # ./sfk-linux-lib5.exe filter /var/log/shuttle.log "-ls:??? ?? ??:??:?? * reporting"

Рекурсивно пройтись по заданному каталогу и найти файлы с одинаковым содержимым:

sles54:/tmp # ./sfk-linux-lib5.exe dupfind /tmp/dir1

Скопировать все текстовые файлы из каталога /tmp/test1 в каталог /tmp/test2, за исключением файлов-дупликатов:

sles54:/tmp # ./sfk-linux-lib5.exe dupfind -listorg /tmp/test1 .txt +run "cp #file /tmp/test2" -yes

Нравится? “Ножик может, ножик может все что угодно”. Вот неполный список “лезвий”:

* статистика по файлам в разрезе времени, размеров, типов
* эффективный поиск с фильтрацией и заменами “на лету” (как текстовые, так и бинарные файлы)
* “карманные” ftp- и http-серверы, функциональность wget
* разбивка больших файлов на части и склеивание в одно целое
* синхронизация файлов в каталогах
* hex-дампы, исходный код из бинарников, преобразование форматов, работа с md5

И еще множество других отверточек и заточек, которые могут оказаться полезными в повседневной работе. Утилита хорошо документирована, возможен поиск как по командам, так и по ключевым словам. Приятный инструмент, в хозяйстве пригодится.

Оставайтесь с нами и расскажите про швейцарский ножик друзьям. До встречи.

Отправить в Twitter, Facebook, ВКонтакте | Опубликовано 09.03.2010 в рубрике "Инструменты"

Комментарии (1)

  1. Автор комментария : jkeks | July 14, 2010

    Да действительно интересная тулза, я ее хочу приспособить для автоправки конфигов Openoffice.

    [Ответить]



Добавить комментарий

Пожалуйста, исправьте результат: дважды два равно



КРАТКОЕ СОДЕРЖАНИЕ

Что такое качество программного обеспечения и как его улучшить: теория и практика, задачи и решения, подводные камни и обходные пути.


ПУТЕВОДИТЕЛЬ

Проект был основан в 2008 году. За это время часть статей устарела, а некоторые из них вызывают улыбку, но пусть они останутся в том виде, в котором были написаны. Cписок всех статей с краткой аннотацией и разбивкой по рубрикам: открыть.

ПОДПИСКА

Доступ к самым интересным материалам по электропочте и RSS. Подробности.

ИЩЕЙКА