localize o diretório do caminho no subdiretório

1

Eu quero encontrar o caminho para o nome do diretório bbb , onde o diretório pai chamado aaa

Por exemplo

/aaa/bbb
/tmp/aaa/bbb
/usr/bin/aaa/bbb
/home/aaa/bbb
/home/aaa/xxx/bbb

Então eu escrevi algo assim:

find /*/aaa -name bbb

Em algumas plataformas, ele funciona e, em alguns casos, não funciona e, em qualquer caso, o /aaa/bbb não é encontrado porque não há diretório pai para aaa

Acho que posso executar find / -name bbb | grep \/aaa , mas acho que se houver algo mais inteligente ...?

    
por Nir 24.08.2015 / 11:44

2 respostas

3

Use a opção -path para este caso:

find / -type d  -path '*/aaa/bbb'

Da página do manual para encontrar:

File name matches shell pattern pattern. The metacharacters do not treat / or . specially; so, for example,

find . -path "./sr*sc"

will print an entry for a directory called './src/misc' (if one exists).

Compatibilidade entre plataformas

Edit: Acabei de notar que as e .

Você não especifica qual versão de find você está usando e a versão acima informações se aplicam ao GNU find. No entanto, a página man também especifica isso,

The predicate -path is also supported by HP-UX find and will be in a forthcoming version of the POSIX standard.

, então parece que -path pode ser usado no HP-UX, mas não no AIX (pelo menos não AIX 7.1 , a última versão de 2015-08-24).

    
por 24.08.2015 / 12:06
0

/ * / aaa não corresponde / aaa e esta é a razão pela qual o find não pode encontrar / aaa / bbb

Se você não gosta de iniciar a busca em / e se você não tiver uma descoberta recente como o sfind portátil que suporta o caminho -path você precisa de uma lista inicial melhor.

    
por 24.08.2015 / 16:57