Linux系統下批量刪除文件的方法很簡單,但是要刪除指定時間內的文件比較難,需要通過Linux腳本來實現,下面小編就給大家介紹下Linux刪除指定時間內文件的方法。
find查找刪除文件
例如從當前目錄查找所有以.txt結尾的文件並在屏幕上顯示出來,命令行為:
find 。 -name ‘*.txt’ -print
查找兩個後綴的文件,就改為下面的用法:
find 。 ( -name *.xml -o -name *.sh )
再如從根目錄查找類型為符號連接的文件,並將其刪除,命令行為:
find / -type l -exec rm {} ;
只查找文件,不包含目錄的(該行,不能加--print,加了會報錯):
find 。 -type f
又如從當前目錄查找用戶tom的所有文件並在屏幕上顯示,命令行為:
find 。 -user ‘tom’ -print
又如顯示當前目錄中大於20字節的.c文件名,命令行為:
find 。 -name “*.c” -size +20c -print
顯示當前目錄中恰好10天前訪問過的文件名,命令行為:
find 。 -atime 10 -print
顯示當前目錄中不到10天前訪問過的文件名,命令行為:
find 。 -atime -10 -print
查找/home目錄下權限為640的文件或目錄,命令行為:
find /home -perm 640
搜索根目錄下大於100KB的文件,並顯示,命令行為:
find / -size +100K -print
搜索根目錄下小於500KB的文件,命令行為:
find / -size -500K -print
刪除文件大小為0的文件
rm -i `find 。/ -size 0`
find 。/size 0 exec rm {} ;
find 。/size 0|xargs rm -rf
在當前目錄中查找所有文件名以.doc結尾,且更改時間在5天以上的文件,找到後進行刪除,且刪除前給出提示,命令行為:
find 。 -name ‘*.doc’ -mtime +5 -ok rm {} ;或
find 。 -mtime +5 -name “*.*” -exec rm -f {} ;
自動刪除當前目錄五天以前的文件
注:後面的反斜槓不能少,不然會報 ”find: 遺漏”-exec”的參數” 。
在當前目錄下查找所有鏈接文件,並以長格式顯示文件的基本信息,命令行為:
find 。 -type l -exec ls -l {} ;
lrw-rw-r-- 1 root root 36 07-27 14:34 。/example2
lrw-rw-r-- 1 root root 72 07-27 14:36 。/example3
lrw-rw-r-- 1 root root 36 07-27 14:36 。/example1
在當前目錄中查找文件名由一個小寫字母、一個大寫字母和兩個數字組成,且擴展名為.doc的文件,並顯示,命令行為:
find 。 -name ‘ [a-z][A-Z][0-9][0-9].doc’ -print
查找空文件夾:
find -type d -empty
但是在利用find進行操作時,不難發現兩個問題:一是find查找耗費的時間相對較長,二是find查詢時較一般的腳本所用的資源要相對大些。而且對於某一個時間段內的文件處理上也不是十分好。所以還是利用普通腳本更實用一些。
例如:我想刪除某目錄下所有6月份的文件,就可以利用下面的腳本實現:
for filename in *; do if [ `date -r $filename +%m` == “06” ];then rm -f $filename; fi done
date -r, --reference=文件 顯示文件指定文件的最後修改時間 。+%m表示只顯示月份,如果結果和06是相同的,則執行後面的刪除。
而且這樣做,我們還可以精確到幾點幾分,刪除本目錄下16點生成的文件:
for filename in *; do if [ `date -r $filename +%H` == “16” ];then rm -f $filename; fi done
刪除16點22分生成的所有文件:
for filename in *; do if [ `date -r $filename +%H%M == “1622” ];then rm -f $filename; fi done
同理,想要刪除某年某月的所有文件也可以使用同樣的方法。
上面就是Linux刪除指定時間段文件的方法介紹了,主要是通過find命令來實現,用戶根據個人需求選擇合適的腳本處理。