find -maxdepth 0 não me retornando nenhuma saída

15

Estou tentando entender como usar a opção find -maxdepth 0 .

Eu tenho a estrutura de diretórios abaixo.

--> file1
--> parent
          --> child1
                   --> file1
                   --> file2
          --> child2
                   --> file1
                   --> file2
          --> file1

Agora, executo meu comando find conforme abaixo.

find ./parent -maxdepth 0 -name "file1"
find ./ -maxdepth 0 -name "file1"
find . -maxdepth 0 -name "file1"

Com nenhum dos comandos find acima, file1 é retornado.

Na página man de find , vejo as informações abaixo.

-maxdepth 0 means only apply the tests and actions to the command line arguments.

Procurei alguns exemplos com a opção -maxdepth 0 e não encontrei nenhum exemplo adequado.

Minha versão find é

find --version
find (GNU findutils) 4.4.2

Alguém por favor pode me fornecer algumas indicações sobre quais casos a opção -maxdepth 0 seria útil?

EDITAR

Quando executo o comando abaixo, obtenho o file1 sendo listado duas vezes. Pretende-se que isto funcione desta maneira?

find . file1 -maxdepth 1 -name "file1"
./file1
file1
    
por Ramesh 16.10.2014 / 05:39

1 resposta

22

Vamos supor que tenhamos file1 no diretório atual. Então:

$ find . -maxdepth 0 -name "file1"
$ find . file1 -maxdepth 0 -name "file1"
file1

Agora, vamos ver o que a documentação diz:

-maxdepth 0 means only apply the tests and actions to the command line arguments.

No meu primeiro exemplo acima, apenas o diretório . está listado na linha de comando. Como . não tem o nome file1 , nada é listado na saída. No meu segundo exemplo acima, . e file1 estão listados na linha de comando e, como file1 corresponde a -name "file1" , ele retornou na saída

Em outras palavras, -maxdepth 0 significa não procura diretórios ou subdiretórios. Em vez disso, procure apenas um arquivo correspondente entre os explicitamente listados na linha de comando.

Nos seus exemplos, apenas os diretórios foram listados na linha de comando e nenhum deles foi nomeado file1 . Portanto, não há saída.

Em geral, muitos arquivos e diretórios podem ser nomeados na linha de comando. Por exemplo, aqui tentamos um comando find com 11 arquivos e diretórios na linha de comando:

$ ls
d1  file1  file10  file2  file3  file4  file5  file6  file7  file8  file9
$ find d1 file1 file10 file2 file3 file4 file5 file6 file7 file8 file9 -maxdepth 0 -name "file1"
file1

caminhos sobrepostos

Considere:

$ find . file1 -maxdepth 0 -iname file1
file1
$ find . file1 file1 -maxdepth 0 -iname file1
file1
file1
$ find . file1 file1 -maxdepth 1 -iname file1
./file1
file1
file1

Aparentemente, como Ramesh aponta, find seguirá cada caminho especificado na linha de comando e procurará correspondências, mesmo se os caminhos levarem ao mesmo arquivo, como em . file ou mesmo se os caminhos forem duplicatas exatas, como em file1 file1 .

    
por 16.10.2014 / 05:46

Tags