Descoberta recursiva que não encontra arquivos ocultos ou recursiva em diretórios ocultos

3

Eu estou querendo pesquisar recursivamente através de um diretório e encontrar todos os arquivos que não são arquivos ocultos e não estão em um diretório oculto. Eu tentei usar find . -type f -not -name '.*' , que exclui os arquivos ocultos do nome base, mas ele ainda recorre a diretórios ocultos.

dir/
   file.py
   .hidden_file
   .hidden_dir/
      file.c

Eu gostaria que a saída fosse:

./dir/file.py

no entanto, obtenho:

./dir/file.py
./dir/.hidden_dir/file.c

EDITAR: Gostaria de listar apenas arquivos, por exemplo, -type f

    
por user1227038 17.01.2013 / 05:12

1 resposta

8

Você terá que "remover" os diretórios nos quais não deseja recorrer:

find dir -name '.*' -prune -o -print

Geralmente -prune é usado com -o porque retorna true, então quando combinado com short-circuit OR, ele tem o efeito de pular -print em diretórios / arquivos ocultos, o que é exatamente o que você deseja.

    
por 17.01.2013 / 05:45

Tags