Encontre arquivos em ordem em pastas ordenadas

1

Eu tenho diretórios listados como

01  02   03_rev  04_N  .....  154  155

Eu quero que find procure por um arquivo em pastas (ordem numérica de pastas) classificadas conforme listado acima. Como eu posso modificar o comando abaixo de encontrar?

for f in $(find . -name 'log_*.log'); do
    ....
done

Obrigado

    
por Razi Ahmed 27.09.2016 / 12:18

1 resposta

4

Você não precisa de find , pode simplesmente usar o shell globbing, você obterá os arquivos classificados por ordem numérica natural:

for f in [0-9]*; do echo "$f"; ## Do stuffs; done

Exemplo:

$ for f in [0-9]*; do echo "$f"; done
01
02
03_rev
04_N
154
155

Resposta baseada no comentário:

Se você quiser procurar um arquivo nesses diretórios, recursivamente e depois ler o arquivo, se for encontrado, faça:

Em vez de percorrer cada diretório separadamente, você deve ir para o diretório pai e deixar find percorrer apenas esses diretórios (usar globbing) e procurar o arquivo:

find /parent/[0-9]* -type f -name 'file.txt'

Para ler o conteúdo do (s) arquivo (s):

find /parent/[0-9]* -type f -name 'file.txt' -exec cat {} +

Supondo que o diretório pai desses diretórios seja /parent , e o arquivo que você está procurando é file.txt .

    
por heemayl 27.09.2016 / 12:26