Imprima e atualize a variável dentro do find

Imprima e atualize a variável dentro do find

Gostaria de executar um findcomando e processar os arquivos que ele retorna, mas também repetir uma contagem dos arquivos processados ​​à medida que avança, para me dar uma ideia de seu progresso.

No momento, meu comando é (por 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

Responder1

Os comandos executados por findsão independentes. Cada um -execinicia um novo comando. Não há como transferir a contagem atual de um comando para outro, exceto armazenando-a em algum lugar (em um arquivo), o que seria muito lento.

Você pode fazer find imprimir algo cada vez que vê um arquivo e canalizar a saída para um programa que conta as linhas de entrada.

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

Isso imprimirá as contagens após um atraso devido ao buffer. VerDesative o buffer no pipeao desligar o buffer.

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

informação relacionada