Imprimir e atualizar variável dentro de localizar

1

Eu gostaria de executar um comando find e processar os arquivos que ele retorna, mas também fazer uma contagem dos arquivos processados conforme o andamento, para me dar uma ideia do seu progresso.

Neste momento, meu comando é (como exemplo):

COUNT=0\; find . -name '*.*' -exec echo "$COUNT: \c" \; -exec echo {} \;

Mas, como resultado, não consigo fazer a contagem ecoar (e não consigo descobrir como incrementá-la). Eu gostaria que me desse algo como:

0: ./FileOne.txt
1: ./FileTwo.txt
...
205: ./FileTwoHundredAndFive.txt
    
por JeffThompson 03.10.2016 / 01:10

1 resposta

3

Os comandos executados por find são independentes. Cada -exec inicia um novo comando. Não há como transferir a contagem atual de um comando para o próximo, exceto armazenando-o em algum lugar (em um arquivo), o que seria muito lento.

Você pode fazer com que a impressão seja algo toda vez que vir um arquivo e canalizar a saída para um programa que conte as linhas de entrada.

find … -print -exec 'the stuff you want to do' | nl

Isso imprimirá as contagens após um atraso devido ao armazenamento em buffer. Consulte Desativar o buffer no tubo ao desativar o armazenamento em buffer.

stdbuf -oL -eL find … -print -exec 'the stuff you want to do' | nl
    
por 03.10.2016 / 01:24

Tags