這是一個問題,請有人解釋或提供一些參考資料。我已經嘗試閱讀一個小時了,但找不到答案。
假設我有 process1 正在目錄池中運行。 process1 選擇一個目錄並在其中建立 .csv 檔案。 .csv 檔案正在被追加,因此,當 process1 繼續處理此目錄(例如,directory1)時,.csv 檔案是不完整的。 process1 然後移動到directory2,依此類推。
現在,我想對 process1 已完成的目錄中的 csv 執行一些操作。理想情況下,我應該檢查哪些目錄已完成並在這些目錄上執行 process2 。但以我無限的智慧,我這樣做:
尋找目錄* -type f -name '*.csv' -exec process2
我的假設是 find 將首先查找呼叫 find 之前存在的所有 csv,然後僅對這些 csv 執行 -exec process2,忽略調用 find 後產生的任何 csv。
看來我錯了(仍然不確定)。有人可以解釋一下嗎?
謝謝。
答案1
使用 -exec 的方式find
是在找到每個檔案時呼叫 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;
同樣,您仍然不知道實際寫入的是哪些,因此您必須單獨解決這個問題。