Pregunta GNU encuentra archivos .extension y -exec, mientras que se están realizando nuevos archivos .extension


Aquí hay un problema. ¿Puede alguien explicar o proporcionar algunas referencias? He estado tratando de leer desde hace una hora pero no puedo encontrar la respuesta.

Supongamos que tengo process1 en un grupo de directorios. process1 toma un directorio y crea, por ejemplo, archivos .csv dentro de él. Los archivos .csv se anexan y, por lo tanto, están incompletos mientras el proceso 1 continúa en este, digamos, directorio1. process1 luego pasa a directory2 y así sucesivamente.

Ahora, quiero hacer algo con csvs en los directorios que process1 ha terminado. Idealmente, debería verificar qué directorios se han terminado y ejecutar process2 en esos. Pero en mi infinita sabiduría, hago esto:

buscar directorios * -type f -name '* .csv' -exec process2

Mi hipótesis fue que find primero encontrará todas las csvs existentes hasta el punto de invocación de find y luego -exec process2 solo en esas, ignorando cualquier csvs que se haya realizado después de la invocación de find.

Parece que estaba equivocado (todavía no estoy seguro). ¿Alguien puede explicar, por favor?

Gracias.


0


origen


¿No podrías tener process1 para ejecutar process2 después de que termine con el archivo? - Rob
Bueno, sí. Tienes razón. No es un problema ya que no hay una solución. Este es un problema ya que hice algo así de estúpido y ahora estoy tratando de entender las repercusiones de esto. Gracias de cualquier manera. - ASB


Respuestas:


La manera find funciona con -exec es que se llama al proceso de ejecución a medida que se encuentra cada archivo. Si quiere trabajar desde 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;

Una vez más, todavía no tienes idea de cuáles se escriben en realidad, por lo que debes resolverlo por separado.


2