GNU находит файлы .extension и -exec, в то время как создаются новые файлы .extension

GNU находит файлы .extension и -exec, в то время как создаются новые файлы .extension

Вот проблема, может кто-нибудь объяснить или дать ссылки. Я пытаюсь читать уже час, но не могу найти ответ.

Предположим, у меня есть процесс 1, работающий с пулом каталогов. Процесс 1 выбирает каталог и создает в нем, скажем, файлы .csv. Файлы .csv добавляются и, следовательно, являются неполными, пока процесс 1 продолжает работу с этим, скажем, каталогом 1. Затем процесс 1 переходит к каталогу 2 и так далее.

Теперь я хочу что-то сделать с csv в каталогах, с которыми закончил работу process1. В идеале я должен проверить, с какими каталогами закончил работу, и запустить process2 на них. Но в своей бесконечной мудрости я делаю так:

найти каталоги* -type f -name '*.csv' -exec процесс2

Я предполагал, что find сначала найдет все csv-файлы, существовавшие до момента вызова find, а затем выполнит -exec process2 только для них, игнорируя любые csv-файлы, которые будут созданы после вызова find.

Кажется, я ошибся (до сих пор не уверен). Может кто-нибудь объяснить, пожалуйста?

Спасибо.

решение1

Способ findработы с -exec заключается в том, что процесс exec вызывается по мере нахождения каждого файла. Если вы хотите работать со снимком, вам, вероятно, лучше сделать что-то вроде этого:

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;

Опять же, вы по-прежнему не знаете, в какие из них на самом деле ведется запись, поэтому вам придется решать этот вопрос отдельно.

Связанный контент