*nix way

Mar 03, 2010 00:32


Уже года три, как я собираю фотографии машин с номерами типа А 000 АА 72 региона.
Иду так по улице - увижу такой номер - достаю фотоаппарат и фотографирую.
Кстати смотреть на номера машин - это теперь привычка:
Я замечаю ВСЕ автомобили серии А 000 АА.





Первоначально с каталогом "Ашек" всё было просто - файл назывался соответственно 103 для машины с номером A103AA72.
Всё естественно и логично, но, как видно из сэмпла,
зачастую одна и та же машина появляется на разных фото, или LC100 c номером A103AA апгрейдится до LC200 с тем же номером.
Эти фотографии надо тоже хранить. Имена файлов для них уже другие 103_1, или 112_n (n - значит, что машина изменилась).
На сегодня в каталоге "Ашки" накопилось 529 файлов, выглядит это примерно вот так:

963.jpg
967.jpg
967_1.jpg
968.jpg
969.jpg
977.jpg
986.jpg
986_2.jpg
987.JPG
987_2.JPG
989.txt
991.jpg
994.JPG
994_1.JPG
995.jpg
x9x.jpg
{9,2}15.jpg
аж3!.jpg

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

Итак, Windows way:

1. Берём студию и C# (или Borland/CodeGear/Embarcadero Delphi)
2. Изучаем как там прочитать имена всех файлов в одной отдельновзятой папке.
3. Пишем хитрый алгоритм
4. Считаем
5. ?????
6. PROFIT!!!!

- долго, стрёмно, неэффективно.
- если я захочу посчитать количесво всех неуникальных файлов (или ещё что-нибудь совсем чуть-чуть другое),
то нужно заново запускать студию, писать программу...

ИТОГ: Windows way - унылое г, особенно когда есть Unix way

UNIX WAY

1. Берём Unix ( В моём случае cygwin)

2. Читаем мануалы, особенно по части регулярных выражений (один раз!)

man egrep

3. В каталоге с ашками говорим так:

ls -1 | egrep --count -i '[0-9]{3}.jpg'

// Особенно важен параметр -i = игнорировать регистр букв, то есть посчитает и 991.jpg,  и 994.JPG

4. Мне сообщают заветное число:
383

+ Изящно! Здорово! Легкоизменяемо!

ИТОГ
У меня 383 уникальных номера Ашек.

PS Спасибо Столлману

windows vs. unix, unix, ашки, egrep

Previous post Next post
Up