快速刪除大量小文件


由於bash會展開例如 rm aa/* 這樣的命令 如果后面的文件太多就會報參數太長, 所以有時候刪除大量小文件就不適合用rm了
可以使用find先查找在刪除 就不會出現上面那種報錯問題, 可是還有一個問題文件太多的話 -exec rm {} ; 完全沒有效率, 一兩個小時估計也就只能刪除幾十萬的文件
對於需要刪除百萬為單位的文件數來說 這就等於蝸牛爬
搜索后發現 可以使用另一個find的參數 -delete 網上有人開玩笑說這個比-exec 快1000倍
雖然這個有些誇張了 但是快10-100倍還是有的 刪除200W的文件 大概需要40幾分鍾

網上還有一個方案, (個人覺得不太適合)
建立一個空目錄, 利用rsync同步這個空目錄到需要刪除的目錄, 這樣就可以刪除掉目錄下的文件, 感覺這樣的操作和直接rm -rf /path 效果差不多
只是后者把目錄刪了, 前者是否會改變文件存儲的inode號待測試.

這里的需求主要是只刪除文件夾內部分文件, 而不是清空文件夾/刪除文件夾

推薦的命令 find /path/to/delete -type f -name "test-log*" -mtime +10 -delete

先推薦一本書: <<unix痛恨者手冊>>
這本書內容不多 幾個小時就可以看完, 里面介紹的有些內容現在已經處理過了, 還是可以推薦看下
另外一本 大教堂與小集市 也可以推薦看下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM