
Gostaria de executar um find
comando 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 find
são independentes. Cada um -exec
inicia 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