GNU findet .extension-Dateien und -exec, während neue .extension-Dateien erstellt werden

GNU findet .extension-Dateien und -exec, während neue .extension-Dateien erstellt werden

Hier ist ein Problem. Kann das bitte jemand erklären oder Referenzen angeben? Ich versuche seit einer Stunde, es zu lesen, kann aber die Antwort nicht finden.

Angenommen, ich habe Prozess1, der einen Pool von Verzeichnissen durchläuft. Prozess1 wählt ein Verzeichnis aus und erstellt darin beispielsweise CSV-Dateien. Die CSV-Dateien werden angehängt und sind daher unvollständig, während Prozess1 beispielsweise in diesem Verzeichnis1 fortfährt. Prozess1 wechselt dann zu Verzeichnis2 und so weiter.

Jetzt möchte ich etwas mit CSVs in Verzeichnissen machen, mit denen process1 fertig ist. Idealerweise sollte ich prüfen, mit welchen Verzeichnissen fertig ist, und process2 für diese ausführen. Aber in meiner unendlichen Weisheit mache ich Folgendes:

Verzeichnisse suchen* -type f -name '*.csv' -exec process2

Meine Annahme war, dass find zuerst alle CSVs findet, die bis zum Aufruf von find vorhanden waren, und dann -exec process2 nur auf diesen ausführt und dabei alle CSVs ignoriert, die nach dem Aufruf von find erstellt wurden.

Anscheinend habe ich mich geirrt (bin mir immer noch nicht sicher). Kann mir das bitte jemand erklären?

Danke.

Antwort1

Die Vorgehensweise findmit -exec besteht darin, dass der Exec-Prozess aufgerufen wird, sobald eine Datei gefunden wird. Wenn Sie mit einem Snapshot arbeiten möchten, ist es wahrscheinlich besser, so etwas zu tun:

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;

Auch hier haben Sie keine Ahnung, in welche tatsächlich geschrieben wird, also müssen Sie das separat lösen.

verwandte Informationen