find -print sempre imprime o diretório inicial

0

Estou tentando contar quantos arquivos e pastas tenho de forma recursiva em um diretório com 500 K arquivos com find (nota: recursivamente e em ). Eu estou usando o seguinte comando:

find my_folder -name '*' -print | wc -l

Mas notei algo estranho ao executar a primeira parte:

find my_folder -name '*' -print

Sempre imprime o nome da pasta ( my_folder neste exemplo) primeiro na primeira linha. Isso aumenta a contagem de arquivos em um no meu primeiro comando

Por que isso? e como posso evitar isso e certifique-se de que encontrar somente imprime o conteúdo em my_folder ?

    
por Amelio Vazquez-Reina 21.07.2013 / 19:01

2 respostas

1

Ele corresponde ao diretório de destino porque o padrão * corresponde a . . Como você está procurando por arquivos , você deve adicionar -type f , para corresponder apenas aos arquivos.

find my_folder -type f

Se você tiver GNU find , também poderá usar -mindepth 1 para impedir que . corresponda.

find my_folder -mindepth 1
    
por 21.07.2013 / 19:15
2

Se você realmente quer apenas arquivos, você pode usar -type f . -mindepth 1 impediria que apenas os diretórios dados na linha de comando correspondam.

    
por 21.07.2013 / 19:14

Tags