Иногда хочется посмотреть на красивые циферки, даже если большого смысла они не несут. Например, посчитать число строк в проекте. Если вы используете Mercurial, то сделать это можно одной командой:
$ hg locate -0 | xargs -0 wc -l
Хотя, наверняка в других VCS есть аналог hg locate
. Этот метод отлично работает для репозиториев без бинарных данных и переваривает файлы с пробелами в именах благодаря аргументу -0
. Если же у вас вдруг в репозитории имеются какие-то бинарники, картинки или шрифты например, то их можно исключить с помощью аргумента -X
:
$ hg locate -0 -X website/static | xargs -0 wc -l
Ещё один метод исключения, более гибкий:
$ hg locate | grep -Eiv '\.(png|jpg|tiff)' | tr "\n" "\0" | xargs -0 wc -l
Вместо пространного объяснения использованных опций в предыдущем однострочнике приведу его копию с длинным ключами:
$ hg locate \
| grep --extended-regexp \
--ignore-case \
--invert-match \
'\.(png|jpg|tiff)' \
| tr "\n" "\0" \
| xargs --null wc --lines
Также, может пригодиться явное задание ревизии для locate
с помощью стандартного для Mercurial аргумента -r
.
В конце пример работы приведённых команд:
$ hg init testwc
$ cd testwc/
/testwc$ echo -e "first line\nsecond line" > text_file1.txt
/testwc$ touch img1.png img2.PnG img3.JPEG img4.JpEg
/testwc$ hg ci -A -m 'first commit'
adding img1.png
adding img2.PnG
adding img3.JPEG
adding img4.JpEg
adding text_file1.txt
/testwc$ echo -e "first line\nsecond line\nthird lines" > text_file2.txt
/testwc$ mkdir static
/testwc$ cp img* static/
/testwc$ hg ci -A -m 'second commit'
adding static/img1.png
adding static/img2.PnG
adding static/img3.JPEG
adding static/img4.JpEg
adding text_file2.txt
/testwc$ hg locate \
| grep --extended-regexp \
--ignore-case \
--invert-match \
'\.(png|jpeg|tiff)' \
| tr "\n" "\0" \
| xargs --null wc --lines
2 text_file1.txt
3 text_file2.txt
5 total
Комментариев нет:
Отправить комментарий