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 invocarfinduma 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 fdos 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.