find命令查詢指定時間的大檔案並刪除

2021-10-05 17:11:49 字數 2304 閱讀 9289

1.1 語法:

使用find命令和rm命令結合使用刪除指定時間的檔案

--時間單位為天

find 查詢路徑 -ctime/-mtime/-atime 時間範圍 -name 檔名稱 -type f -exec rm

\;--時間單位為分鐘

find 查詢路徑 -cmin/-mmin/-amin 時間範圍 -name 檔名稱 -type f -exec rm

\;

1.2 示例:
--刪除/home/testfile目錄下修改時間大於2天,字尾為.dat的檔案

find /home/testfile -mtime +2 -name "*.dat" -type f -exec rm

\;

特別說明:如果檔名稱使用模糊查詢,則需要對檔名部分使用雙引號,如上述示例,否則會出現如下錯誤資訊:

find: paths must precede expression

usage: find

[-h]

[-l]

[-p]

[path...]

[expression]

linux為我們提供了乙個簡便的查詢方式,那就是 +n 和 -n。下面以 -mtime 舉例說明:

-mtime n : n為數字,意思為在n天之前的「一天之內」被更改過內容的檔案

-mtime +n : 列出在n天之前(不含n天本身)被更改過內容的檔名

-mtime -n : 列出在n天之內(含n天本身)被更改過內容的檔名

找 「5天之內被更改過的檔案」 就是 find / -mtime -5 ,找「5天前的那一天被更改過的檔案」 就是 find / -mtime 5 ,找「5天之前被更改過的檔案」 就是 find / -mtime +5。接下來用圖示說明:

由這個時光軸我們可以知道,最右邊為當前時,+5 代表大於等於 6 天前的檔案, -5 代表小於等於 5 天內的檔案,5 則是代表 5-6 那一天的檔案。

關於find命令使用時間篩選檔案說明,可以參考如下部落格:

linux常用命令之 查詢命令 find —— 細說 -atime,-mtime,-ctime - isqiao -

當需要刪除的單個檔案比較小時,可以使用第一節的常規方法刪除檔案。

當需要刪除的單個檔案比較大時,使用rm命令刪除後可能會出現磁碟空間不釋放的情況。此時的處理思路如下:

第一步:查詢需要刪除的大檔案並將內容清空

沒有使用find命令時,可以使用如下方法清空檔案內容(此處以test.txt為例)

echo

''> test.txt

cat /dev/null > test.txt

> test.txt

cp /dev/null test.txt

dd if=/dev/null of=test.txt

truncate -s 0 test.txt

如果需要和find命令結合,則無法使用echo命令,但是可以使用truncate命令,如下示例查詢/home/testfile目錄下修改時間大於2天,字尾為dat的檔案,並將其內容清空:

find /home/testfile  -mtime +2 -name "*.dat" -type f -exec truncate -s 0  \;
【關於truncate命令】

truncate 可被用來將乙個檔案縮小或者擴充套件到某個給定的大小。你可以利用它和 -s 引數來特別指定檔案的大小。要清空檔案的內容,則將檔案的大小設定為 0即可

關於快速刪除大檔案的方法可以參考如下部落格:

linux 下清空或刪除大檔案/大量檔案的幾種方法_運維_sd4493091的部落格-csdn部落格

第二步:刪除檔案大小為0的檔案

檔案內容清空後,將其刪除

find /home/testfile -name "*.dat" -type f -size 0 -exec rm

\;

特別說明:此處不能再使用與第一步相同的時間範圍框定,因為truncate操作後的檔案的mtime時間已經發生變化

若相同路徑下已經存在大小為0、相同字尾但不能被刪除的檔案不適用此方法

find命令 之查詢指定時間內修改過的檔案

比如我們要查詢linux下指定時間內做過改動的檔案,我們可以用find命令,其實find命令的功能十分強大,下面我們通過幾個簡單的例子來學習下find命令的簡單用法 find opt iname atime 1 type f 找出 opt 下一天前訪問過的檔案 選項 options 所有的選項都總是...

find命令 之查詢指定時間內修改過的檔案

比如我們要查詢linux下指定時間內做過改動的檔案,我們可以用find命令,其實find命令的功能十分強大,下面我們通過幾個簡單的例子來學習下find命令的簡單用法 find opt iname atime 1 type f 找出 opt 下一天前訪問過的檔案 選項 options 所有的選項都總是...

mysql 指定時間 MySQL查詢指定時間的資料

mysql查詢指定時間的資料 user event 使用者事件表 create time 表中儲存時間的字段 獲取當月資料 select from user event where date format create time,y m date format now y m 獲取3月份資料 sel...