2013-04-08 3 views
0

У меня есть функция (fgf "thing") Emacs, который создает подпроцесс, который выглядит следующим образом:за исключением .svn .git файлов с находкой + xargs + Grep труба

find . \(-type f -a \! -regex '\.(svn|git)' \) -print0 | xargs -0 grep -nH -e 'thing' 

В принципе я не хочу grep смотреть на любой.git или .svn файлов. Как я могу это сделать?

+0

Что не работает с командой, которую вы опубликовали? –

ответ

3
find . -type d '(' -name .svn -o -name .git ')' -prune -o -type f -exec grep -nH -e 'thing' {} + 

-prune Использование избежать рекурсии в .svn и .git каталогов лучше, чем с помощью регулярных выражений. Также -exec предпочтительнее -print0 | xargs -0.

+0

Спасибо. Не совсем работает. Получил список каталогов и выходов, которые сказали grep: : Является ли каталог – gknauth

+1

@gknauth См. Мое редактирование. Добавлено '-type f'. –

+0

С вашим редактированием '-type f' он работал отлично. Большое спасибо! – gknauth