天天看點

linux中删除指定日期之前的檔案

要删除

​​系統​​中就的備份檔案,就需要使用指令了:

    #find /tmp -mtime +30 -type f -name *.sh[ab] -exec rm -f {} \;

  假如在一個目錄中保留最近30天的檔案,30天前的檔案自動删除

  #find /tmp -mtime +30 -type f -name *.sh[ab] -exec rm -f {} \;

  /tmp  --設定查找的目錄;

  -mtime +30 --設定時間為30天前;

  -type f --設定查找的類型為檔案;

  -name *.sh[ab] --設定檔案名稱中包含sha或者shb;

  -exec rm -f --查找完畢後執行删除操作;

  提示:将此指令寫入crontab後即可自動完成查找并删除的工作

  另外的方法大同小異

  #find . -mtime +30 -type f | xargs rm -rf

  www.2cto.com  

我的操作是:先ls -ltr 檢視時間,沒有太久的是以就用 -cmin n查找系統中最後N分鐘被改變檔案狀态的檔案。具體指令:$ find /home/oracle/test6 -cmin +20 -type f -name *.xml -exec rm -f { } \; 

另外的方法大同小異

#find . -mtime +30 -type f | xargs rm -rf

$find . -type f -cmin +10 -exec rm -rf *.xml {} \;

find . type f -name "debug*"  -atime +3 -exec rm -f {} \;

首先cd進入目錄:

 find . -name "*~" -exec rm  {} \;

find . -ctime +n -exec  -exec rm -vi {} \;

這裡的+n是指多少天以前,比如:+7

find . -ctime +7 -exec  -exec rm -vi {} \;

如果不想手動确認,把指令中的-vi改成-fv

請詳查find指令.

使用find時要區厘清楚atime,ctime,mtime的差別,一般都使用mtime來查找,因為在ls -al顯示出來的就是mtime時間戳,可以使用:  # find  $PAHT -mtime +3  -ok rm {} \;  

在互動模式下删除比較保險。

一、按照一定日期格式命名檔案

1、按照一定的格式輸出日期:

    www.2cto.com  

    date +"%y%m%d"

    格式說明:

    % : 印出 %

%n : 下一行

%t : 跳格

%H : 小時(00-23)

%I : 小時(01-12)

%k : 小時(0-23)

%l : 小時(1-12)

%M : 分鐘(00-59)

%p : 顯示本地 AM 或 PM

%r : 直接顯示時間 (12 小時制,格式為 hh:mm:ss [AP]M)

%s : 從 1970 年 1 月 1 日 00:00:00 UTC 到目前為止的秒數

%S : 秒(00-60)

%T : 直接顯示時間 (24 小時制)

%X : 相當于 %H:%M:%S

%Z : 顯示時區

日期方面 :

%a : 星期幾 (Sun-Sat)

%A : 星期幾 (Sunday-Saturday)

%b : 月份 (Jan-Dec)

%B : 月份 (January-December)

%c : 直接顯示日期與時間

%d : 日 (01-31)

%D : 直接顯示日期 (mm/dd/yy)

%h : 同 %b

%j : 一年中的第幾天 (001-366)

%m : 月份 (01-12)

%U : 一年中的第幾周 (00-53) (以 Sunday 為一周的第一天的情形)

%w : 一周中的第幾天 (0-6)

%W : 一年中的第幾周 (00-53) (以 Monday 為一周的第一天的情形)

%x : 直接顯示日期 (mm/dd/yy)

%y : 年份的最後兩位數字 (00.99)

%Y : 完整年份 (0000-9999)

2、命名帶有日期的檔案:filename`date +%y%m%d`,此處的"`"不是單引号。

二、以建立檔案日期為界線删除檔案

  www.2cto.com  

1、find指令簡解

       find pathname -options [-print -exec -ok ...]

    pathname: find指令所查找的目錄路徑。例如用.來表示目前目錄,用/來表示系統根目錄。

    -print: find指令将比對的檔案輸出到标準輸出。

    -exec: find指令對比對的檔案執行該參數所給出的shell指令。相應指令的形式為'command' {  } \;,注意{   }和\;之間的空格。

    -ok: 和-exec的作用相同,隻不過以一種更為安全的模式來執行該參數所給出的shell指令,在執行每一個指令之前,都會給出提示,讓使用者來确定是否執行。

  options:

  -name

按照檔案名查找檔案。

-perm

按照檔案權限來查找檔案。

-prune

使用這一選項可以使find指令不在目前指定的目錄中查找,如果同時使用-depth選項,那麼-prune将被find指令忽略。

-user

按照檔案屬主來查找檔案。

-group

按照檔案所屬的組來查找檔案。

-mtime -n +n

按照檔案的更改時間來查找檔案, - n表示檔案更改時間距現在n天以内,+ n表示檔案更改時間距現在n天以前。find指令還有-atime和-ctime 選項,但它們都和-m time選項。

-nogroup

查找無有效所屬組的檔案,即該檔案所屬的組在/etc/groups中不存在。

-nouser

查找無有效屬主的檔案,即該檔案的屬主在/etc/passwd中不存在。

-newer file1 ! file2

  www.2cto.com  

查找更改時間比檔案file1新但比檔案file2舊的檔案。

-type

查找某一類型的檔案,諸如:

b - 塊裝置檔案。

d - 目錄。

c - 字元裝置檔案。

p - 管道檔案。

l - 符号連結檔案。

f - 普通檔案。

-size n:[c] 查找檔案長度為n塊的檔案,帶有c時表示檔案長度以位元組計。

-depth:在查找檔案時,首先查找目前目錄中的檔案,然後再在其子目錄中查找。

-fstype:查找位于某一類型檔案系統中的檔案,這些檔案系統類型通常可以在配置檔案/etc/fstab中找到,該配置檔案中包含了本系統中有關檔案系統的資訊。

-mount:在查找檔案時不跨越檔案系統mount點。

-follow:如果find指令遇到符号連結檔案,就跟蹤至連結所指向的檔案。

-cpio:對比對的檔案使用cpio指令,将這些檔案備份到錄音帶裝置中。

對于時間相關的參數,有以下補充:

 -amin n

  查找系統中最後N分鐘通路的檔案

  -atime n

  查找系統中最後n*24小時通路的檔案

  www.2cto.com  

  -cmin n

  查找系統中最後N分鐘被改變檔案狀态的檔案

  -ctime n

  查找系統中最後n*24小時被改變檔案狀态的檔案

    -mmin n

  查找系統中最後N分鐘被改變檔案資料的檔案

  -mtime n

  查找系統中最後n*24小時被改變檔案資料的檔案

2、删除固定日期以前的檔案