Aquí hay un problema, ¿alguien puede explicarlo o proporcionar algunas referencias? Llevo una hora intentando leer pero no encuentro la respuesta.
Supongamos que tengo el proceso 1 en un grupo de directorios. proceso1 elige un directorio y crea, digamos, archivos .csv dentro de él. Los archivos .csv se están agregando y, por lo tanto, están incompletos mientras el proceso1 continúa en este, digamos, directorio1. El proceso1 luego pasa al directorio2 y así sucesivamente.
Ahora, quiero hacer algo con csvs en directorios con los que finalizó proceso1. Lo ideal sería comprobar con qué directorios se ha terminado y ejecutar el proceso 2 en ellos. Pero en mi infinita sabiduría, hago esto:
buscar directorios* -tipo f -nombre '*.csv' -proceso ejecutivo2
Mi suposición era que find primero encontrará todos los csv existentes hasta el punto de invocación de find y luego -exec process2 solo en esos, ignorando cualquier csv que se haya creado después de la invocación de find.
Parece que me equivoqué (todavía no estoy seguro). ¿Alguien puede explicar, por favor?
Gracias.
Respuesta1
La forma en que find
funciona con -exec es que el proceso ejecutivo se llama a medida que se encuentra cada archivo. Si desea trabajar a partir de una instantánea, probablemente sea mejor que haga algo como esto:
find directories* -type f -name '*.csv' > /tmp/filelist
cat /tmp/filelist | while read file; do
process2 $file # I'm assuming you want to pass the filename somehow...
done;
Nuevamente, todavía no tienes idea de cuáles se están escribiendo realmente, por lo que debes resolverlo por separado.