Find
如何在unix中查找和刪除早於特定日期的文件?
我有一個日誌文件夾,裡面有 7 個文件夾。這七個文件夾中也有子文件夾,這些子文件夾也有子文件夾。我想刪除所有文件夾中所有超過 15 天的文件,包括子文件夾,而不觸及文件夾結構,這意味著只有文件。
mahesh@inl00720:/var/dtpdev/tmp/ > ls A1 A2 A3 A4 A5 A6 A7 mahesh@inl00720:/var/dtpdev/tmp/A1/ > ls B1 B2 B3 B4 file1.txt file2.csv
你可以先說
find /var/dtpdev/tmp/ -type f -mtime +15
。這將找到所有超過 15 天的文件並列印它們的名稱。或者,您可以在您確認該
find
命令列出了您要刪除的文件(而不是其他文件)後,您可以添加一個“操作”來刪除這些文件。執行此操作的典型操作是:
-exec rm -f {} \;
(或者,等效地,-exec rm -f {} ';'
)這將
rm -f
在每個文件上執行;例如,rm -f /var/dtpdev/tmp/A1/B1; rm -f /var/dtpdev/tmp/A1/B2; rm -f /var/dtpdev/tmp/A1/B3; …
-exec rm -f {} +
這將同時
rm -f
在許多文件上執行;例如,rm -f /var/dtpdev/tmp/A1/B1 /var/dtpdev/tmp/A1/B2 /var/dtpdev/tmp/A1/B3 …
所以它可能比選項 1 稍微快一點。(
rm -f
如果你有數千個文件,它可能需要執行幾次。) 3.-delete
這告訴
find
自己刪除文件,而不執行rm
. 這可能比變體快得多-exec
,但它不適用於所有系統。因此,如果您使用選項 2,則整個命令將是:
find /var/dtpdev/tmp/ -type f -mtime +15 -exec rm -f {} +