- 1
pattern=hidden; find . | grep -e ".*\.java$" | xargs sh -ac 'for arg in $@; do cat -n $arg | grep -e "$pattern" > /dev/null && echo $arg && cat -n $arg | grep -e "$pattern"; done'
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−116
pattern=hidden; find . | grep -e ".*\.java$" | xargs sh -ac 'for arg in $@; do cat -n $arg | grep -e "$pattern" > /dev/null && echo $arg && cat -n $arg | grep -e "$pattern"; done'
Нужно было поискать юзаджи по коду.
Вот такое вот наворотил.
Каюсь...
Я обычно говнокодю подобный поиск как-то так:
grep -r --include \*.java hidden *
Я так понимаю этот код написан как раз ради того, чтобы убрать префиксы, и выводить имя файла только 1 раз?
Грепаем 2 раза только для того, чтобы не выводить имен файлов без совпадений.
PS Да, одноразовая, хотя может быть оформлю как скриптик и положу в папочку со всякими утилитами, может еще когда пригодится.
еще, если ты в VIM разбераешься, можешь в нем :grep или :vim коммандами пользоватся. :vim медлее чем :grep но там тебе и регулярки почти полноценные, и маски файлов человеческие.
например, аналог в VIM:
:vim /pattern/ **/*.java
а потом :cn и :cp (у меня на F5 и F6 посаженые) (или :cw) что бы по результатам ходить.
Видимо тем, что выводит имя файла в каждой строке. А myzone хочется, чтобы имя файла выводилось 1 раз перед самими совпадениями.
Да и писать чуть меньше даже получится.
Не? Хотя, наверное, можно было и короче (awk как-то не айс тут).
А, я понял, ну тогда вот такое вот родилось.