Se você quiser procurar em e em todos os diretórios (sub) chamados subdir1
que são um nível abaixo do nível superior, você pode fazer
find */subdir1 …
Se você está procurando arquivos cujos nomes contenham Foo
, você pode fazer
find */subdir1 -type f -name "*Foo*" -print
Ou você poderia fazer
find */subdir1 -type f -print | grep "Foo"
mas isso incluiria todos os arquivos em um diretório
cujo nome inclui a string Foo
,
por exemplo, dir42/subdir1/Foods_I_Like/pizza
e dir42/subdir1/Foods_I_Like/chicken
.
Se você procura arquivos que contêm Foo
(isto é, cujo conteúdo contém Foo
), você pode fazer
find */subdir1 -type f -print | xargs grep "Foo"
Notas:
- Isso funciona porque a sinopse (uso) de
find
é semelhantefind [options] [starting-point...] [expression]
isto é, você pode invocarfind
uma vez em vários pontos de partida; como em:find dir1/subdir1 dir2/subdir1 [expression]
- Isso lida com arquivos e diretórios cujos nomes incluem espaço (s) muito bem.
- Se você estiver procurando por arquivos ou diretórios cujos nomes contenham
Foo
, deixe de fora o-type f
dos comandos correspondentes. - É claro que você deve citar
"*Foo*"
e não deve citar*/subdir1
. A citação de"Foo"
é opcional - não dói, mas você não precisa citar palavras que não contêm caracteres especiais. - Você pode deixar de fora o
-print
, pois é a ação padrão.