萬盛學電腦網

 萬盛學電腦網 >> Linux教程 >> Linux系統刪除指定時間段文件的方法

Linux系統刪除指定時間段文件的方法

  Linux系統下批量刪除文件的方法很簡單,但是要刪除指定時間內的文件比較難,需要通過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

上一頁12下一頁共2頁

  搜索根目錄下小於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命令來實現,用戶根據個人需求選擇合適的腳本處理。

上一頁12 下一頁共2頁
copyright © 萬盛學電腦網 all rights reserved