
Me gustaría ejecutar un find
comando y procesar los archivos que devuelve, pero también hacer un recuento de los archivos procesados a medida que avanza, para tener una idea de su progreso.
En este momento, mi comando es (como ejemplo):
COUNT=0\; find . -name '*.*' -exec echo "$COUNT: \c" \; -exec echo {} \;
Pero como resultado, no consigo que el recuento se haga eco (y no sé cómo incrementarlo). Me gustaría que me diera algo como:
0: ./FileOne.txt
1: ./FileTwo.txt
...
205: ./FileTwoHundredAndFive.txt
Respuesta1
Los comandos ejecutados por find
son independientes. Cada uno -exec
inicia un nuevo comando. No hay manera de transferir el conteo actual de un comando al siguiente, excepto almacenándolo en algún lugar (en un archivo), lo cual sería muy lento.
Puede hacer que find imprima algo cada vez que vea un archivo y canalizar la salida a un programa que cuente las líneas de entrada.
find … -print -exec 'the stuff you want to do' | nl
Esto imprimirá los recuentos después de un retraso debido al almacenamiento en búfer. VerDesactivar el almacenamiento en búfer en la tuberíaal desactivar el almacenamiento en búfer.
stdbuf -oL -eL find … -print -exec 'the stuff you want to do' | nl