Я использую zsh, у которого есть рекурсивное сглаживание. Если вам нужно посмотреть на конкретные типы файлов, следующий пример будет эквивалентен вашему примеру:
grep 'sometext' **/*.txt
Если вам не важен тип файла, опция -r будет лучше:
grep -r 'sometext' *
Хотя, незначительная настройка вашего исходного примера даст вам именно то, что вы хотите:
find . -name '*.txt' \! -wholename '*/.svn/*' -exec grep 'sometext' '{}' \; -print
Если вы часто этим занимаетесь, сделайте это функцией (включите это в конфигурацию вашей оболочки):
function grep_no_svn {
find . -name "${2:-*}" \! -wholename '*/.svn/*' -exec grep "$1" '{}' \; -print
}
Где первый аргумент функции - это текст, который вы ищете. Итак:
$ grep_here_no_svn "sometext"
Или:
$ grep_here_no_svn "sometext" "*.txt"