Existe alguma maneira de dizer ack
para procurar apenas texto na pasta atual? (ou especificar um max-depth
nível?) E com grep
?
Existe alguma maneira de dizer ack
para procurar apenas texto na pasta atual? (ou especificar um max-depth
nível?) E com grep
?
Respostas:
Use -n
para no-recurse
:
$ ack -n foo
grep
não é recursivo por padrão e você deve usar o -r
sinalizador apenas se desejar uma pesquisa recursiva.
Você pode pesquisar o diretório atual da grep
seguinte maneira:
$ grep -- foo *
Você pode encontrar com o argumento -exec. exemplo:
find . -maxdepth 1 -exec grep foo {} \;
Isso pode ser escalado, ou seja, -maxdepth 2
-maxdepth 1
) foi escalável. Por exemplo -maxdepth 2
. Não sei como descrever a edição que você fez como tal.
-maxdepth
) não é uma sintaxe portátil / padrão (apenas GNU e alguns BSDs). Além disso, não faz sentido usar \;
aqui (execute um grep
por arquivo). Use grep -H foo {} +
(específico do GNU) ou grep foo /dev/null {} +
(padrão) para garantir que o nome do arquivo seja sempre impresso. O padrão equivalente -maxdepth 2
seriafind . -path './*/*' -type d -prune -o -type f -exec ...
.
como você não o fornece -mindepth 1
), enquanto o GNU grep
não tentará ler os diretórios com -r
(ele se repete ). Você pode querer adicionar um -d skip
para grep
(assumindo GNU grep) ou melhor adicionar ! -type d
a find
ou ainda melhor -type f
(ou -xtype f
assumindo GNU find
), como você provavelmente não quer grep
ler arquivos não-regulares.
grep -Hin
essa abordagem para ver o nome do arquivo e a linha em que a ocorrência está.
-n
não recursão.