本章為大家詳細的整理了,在linux系統中大量刪除檔案和空檔案刪除的命令,請大家“對症下藥”
linux下面刪除檔案或者目錄命令rm(remove)
功能說明:刪除檔案或目錄。
語 法:rm [-dfirv][--help][--version][檔案或目錄...]
補充說明:執行rm指令可刪除檔案或目錄,如欲刪除目錄必須加上參數"-r",否則預設僅會刪除檔案。
參 數:
-d或--directory 直接把欲刪除的目錄的硬串連資料刪成0,刪除該目錄。
-f或--force 強制移除檔案或目錄。
-i或--interactive 刪除既有檔案或目錄之前先詢問使用者。
-r或-R或--recursive 遞迴處理,將指定目錄下的所有檔案及子目錄一併處理。
-v或--verbose 顯示指令執行過程。
--help 線上協助。
Linux下大量刪除空檔案(大小等於0的檔案)的方法
代碼如下
find . -name "*" -type f -size 0c | xargs -n 1 rm -f
用這個還可以刪除指定大小的檔案,只要修改對應的 -size 參數就行,例如:
代碼如下
find . -name "*" -type f -size 1024c | xargs -n 1 rm -f
就是刪除1k大小的檔案。(但注意 不要用 -size 1k,這個得到的是佔用空間1k,不是檔案大小1k的)。
如果只要刪除檔案夾或者名字串連等,可以相應的改 -type 參數,具體細節見 man find
刪除N天前檔案
LINUX按時間大量刪除檔案(刪除N天前檔案)
代碼如下
find /opt/Oracle/admin/CCXE/bdump/ -mtime +10 -name "*.*" -exec rm -Rf {} ;
/opt/Oracle/admin/CCXE/bdump/ :想要進行清理的任意目錄
-mtime:標準語句寫法
+10:尋找10天前的檔案,這裡用數字代表天數,+30表示尋找30天前的檔案
"*.*":希望尋找的資料類型,"*.jpg"表示尋找副檔名為jpg的所有檔案,"*"表示尋找所有檔案
-exec:固定寫法
rm -rf:強制移除檔案,包括目錄
{} ; :固定寫法,一對大括弧+空格+/+;
徹底刪除檔案
有些時候我們要徹底刪除一些檔案,可以使用shred命令來實現,shred是coreutils的一部分,所以Linux中基本都會有這個命令。
shred徹底刪除檔案的方法:
代碼如下
$ shred -u file
shred會用一些隨機內容覆蓋檔案所在的節點和資料區塊,並刪除檔案(-u參數)。
如果想清除的更徹底一點可以加-z 參數,意思是先用隨機資料填充,最後再用0填充。
代碼如下
$ shred -u -z file
另外shred還可以清除整個分區或磁碟,比如想徹底清除/dev/sdb1分區的內容可以這樣:
$ shred /dev/sdb1 (注意不要加-u參數)
shred的詳細參數:
-f, --force 更改許可權允許寫入(如有必要)
-n, --iterations=N 重寫N次,預設為3次
--random-source=FILE 從指定檔案讀取資料
-s, --size=N 將檔案粉碎為固定大小 (可使用尾碼如K、M、C等)
-u, --remove 重寫後截短並移除檔案
-v, --verbose 顯示進度
-z, --zero - add 用0覆蓋資料
–help 顯示協助
–version 顯示版本資訊