1. 程式人生 > 其它 >Linux中如何查詢最近修改的檔案

Linux中如何查詢最近修改的檔案

作為一個Linux系統管理員,我們經常會維護或者配置Linux中的各種配置檔案等,由於檔案太多,有時候忘記了修改了啥檔案,這個時候我們想檢視一下最近修改和配置的檔案到底是哪些。那麼有沒有啥好的辦法來查詢最近修改的檔案呢?下面我們就來看一看如何查詢最近修改的檔案。

1,find命令

1.1 find 命令允許我們以分鐘或天為單位來查詢檔案。分鐘用 -mmin 定義,天可以用 -mtime 定義.在分鐘或者天后面還可以定義搜尋條件,通過跟上加號(+)指定數值來查詢什麼時間之前的檔案。例如,要搜尋1分鐘(或者24分鐘)之前修改過的檔案,請使用-mmin(例如:+1,+24等),要搜尋1天前或者2天前修改的檔案,請使用-mtime (例如+1,+2等)。要搜尋在持續時間內修改的檔案,請使用帶有帶有減號(-)持續時間值(例如:-1,-24)等。例如下面的例子是發現home路徑下所有在一分鐘之內修改的檔案。

[root@sharplee ~]# find /home/ -type f -mmin -1

接下來看一下一分鐘之前修改過的檔案。

[root@sharplee ~]# find /home/ -type f -mmin +1

下面是一天內修改過的檔案。

[root@sharplee ~]# find /home/ -type f -mtime -1

 

接下來看一下一天前修改過的檔案。

[root@sharplee ~]# find /home/ -type f -mtime +1

 1.2 find 命令加上引數-newermt,我們可以獲取早於指定日期修改的檔案。比如我們查詢在3月22號的檔案。

[root@sharplee ~]# find /home/ -type f -newermt 2022-03-22

我們也可以使用這個引數的組合表示式,就比如在什麼時間不在另外一個日期的檔案。例如下面在2022年3月22的,不在2022-03-23

[root@sharplee sharplee]#  find /home/ -type f -newermt 2022-03-22 ! -newermt 2022-03-23

 下面來看一下newermt如何實現查詢在幾分鐘之內或者在幾分鐘之前的修改檔案,或者是在幾天前或者在幾天內修改檔案的方式。以下是查詢24小時內修改的檔案。

[root@sharplee sharplee]# find /home/ -type f -newermt '-24 hours'

以下是查詢10分鐘之前到現在修改的檔案。

[root@sharplee sharplee]# find /home/ -type f -newermt '-10 minutes'

以下是查詢1天之前到現在修改的檔案。

[root@sharplee sharplee]#  find /home/ -type f -newermt '1 day ago '

 

以下是查詢昨天到現在修改的檔案。

[root@sharplee sharplee]#  find /home/ -type f -newermt 'yesterday'

 

2,ls命令

我們知道 ls 命令列出了有關特定目錄中的檔案的資訊。它的用法之一是顯示檔案的格式,並按修改時間對輸出進行排序。例如,以下命令用於展示檔案的列表通過時間展示。

[root@sharplee sharplee]# ls -lt

我們可能無法像 find 命令那樣列出最近修改過的檔案。但是,我們可以通過在ls命令的結果上應用grep命令來根據特定的日期或時間來過濾上述輸出結果。例如,下面是過濾日期為Mar 22號修改的檔案

[root@sharplee sharplee]# ls -lt | grep "Mar 22"

 下面的示例是用於過濾時間是10:的檔案。

[root@sharplee sharplee]# ls -lt | grep "Mar 22"

請注意,預設情況下,find 命令是遞迴的。為了在 ls 命令上啟用遞迴功能,我們還需要新增 R(大寫)引數。

[root@sharplee sharplee]# ls -ltR | grep "Mar 22"

總結:通過使用find和ls命令可以查詢最近修改的檔案,但是發現通過find是能夠更好的查詢最近修改的檔案,ls命令則需要在後面新增許多過濾條件以及控制引數來查詢最近修改的檔案。