最近,我正在編寫一個用於維護特定文件夾大小的bash命令行腳本。請注意,有些程序有時會在此文件夾內寫入/更新文件,因此「全部捕獲」rm -rf將永遠不適合這種情況。刪除lsof在文件夾中未列出的所有文件
我能夠檢索所有的「活動」,換句話說,打開的文件使用lsof的,並把它們打印出來使用awk:
lsof +D ./ | awk ' { print ($NF) } '
這給了我這些打開的文件列表,我明明DON 'T想擺脫他們。不過,我想刪除其餘的。
我希望有在rm命令的選項排除使用^選擇一些文件...
有沒有辦法在bash實現這一目標?
非常感謝。
爲什麼你不想刪除打開的文件?它們不會對打開句柄的程序造成任何問題(它們將能夠讀取和/或寫入,就好像它們仍然存在一樣),並且這些空間將在關閉它們時自動回收。 – Cairnarvon 2013-03-04 22:53:06
@Cairnarvon因爲這些文件是用於記錄/追蹤的目的,並且按照業務規則,我們應該保持它們完好無損。 – 2013-03-04 22:54:22
您應該清楚地將這些文件列入白名單,而不是希望在清理文件夾時沒有意外關閉您的進程。 – Cairnarvon 2013-03-04 23:44:34