Maxdepth equivalente para localizar no AIX

4

Estou tentando obter todos os arquivos por máscara em algum diretório sem procurar recursivamente em subdiretórios. Não há nenhuma opção -maxdepth 0 no AIX para isso.

Eu ouvi sobre -prune , mas ainda não consigo entender como funciona.

Eu acho que o comando deve ser parecido com

find dir \( ! -name dir -prune -type f \) -a -name filemask

mas não funciona.

Você poderia, por favor, escrever um comando correto para mim e explicar como isso funcionará?

UPD

Parece comando

find dir ! -path dir -prune

imprime todos os arquivos e catálogos em dir , mas não arquivos e catálogos em dir/* , para que eu possa usá-lo no meu caso.

    
por Vikora 23.06.2017 / 17:04

2 respostas

7

Você deseja:

find dir/. ! -name . -prune -type f -name filemask

Ou:

find dir ! -path dir -prune -type f -name filemask

Para localizar os arquivos regulares chamados filemask in dir sem pesquisar nos subdiretórios de dir .

Com find dir ! -name dir -prune , você teria problemas se houvesse um diretório dir/dir .

A abordagem dir/. funciona porque find não vai encontrar nenhum outro arquivo chamado . do que o arquivo dir/. passado como argumento.

A abordagem -path contorna o caminho do arquivo (em oposição ao nome), -path dir corresponderá a dir , mas não a dir/dir (so dir será o único diretório que não será podado). -path pode não estar disponível em versões mais antigas do AIX.

Mais geralmente, para o equivalente padrão do -maxdepth n do GNU ou do FreeBSD -depth n , veja Limite de POSIX para profundidade específica?

    
por 23.06.2017 / 17:48
2

No AIX, você pode usar a opção -prune .

find ./* -prune
    
por 31.12.2017 / 07:10

Tags