Linux文件查找命令詳解

對於文件查找,咱們最好用的仍是屬於find命令了,在說find命令以前,先把另外幾個查找命令介紹一下。數據庫

目錄

0x01 查詢命令介紹3d

0x02 find命令介紹code

0x01 查詢命令介紹

在介紹以前,首先先了解一個特殊變量——PATHblog

PATH下存放着命令所在的路徑,咱們在執行命令的時候先會在PATH變量中從前到後挨個路徑進行查找,找到一條以後就直接中止了,因此就須要把想要先生效的路徑放到前面,每個路徑中間使用冒號進行分隔get

file

which命令博客

經過which命令,咱們能夠找到某一個命令所在的位置,它是經過PATH路徑進行查詢的it

file

whereis命令test

whereis命令也能夠跟which同樣搜索路徑,可是他還會搜索一些其餘的內容,它也是經過PATH路徑進行查詢的變量

file

若是隻想搜索二進制命令的話,須要增長 -b 參數date

file

locate命令

locate也能查詢命令的相關路徑以及幫助等,可是它不是從PATH路徑中進行遍歷的,它是從Linux中的一個數據庫mlocate.db進行查詢的,mlocate.db數據庫位於/var/lib/mlocate/mlocate.db,因爲它所展現的內容太多,因此這裏我使用 -n 參數來指定顯示的行數

file

那咱們再舉一個例子來進行查詢

咱們在root目錄下建立一個balabala.txt的文件

file

而後使用下列命令來進行查詢

locate balabala

file

明明存在這個文件爲何查不到呢?

這是因爲locate進行查找是在mlocate.db數據庫進行查找的,可是咱們剛剛建立的這個文件並不在這個數據庫中,因此咱們須要使用updatedb進行更新數據庫

file

在更新完後就能夠正常查詢到了,通過查詢能夠得知updatedb會天天自動執行一次

file

可是這個命令咱們通常是不會用到的

0x02 find命令介紹

與上面的幾個命令相比,find的速度是最慢的,由於find是從硬盤裏進行查找的,可是find命令也是咱們最經常使用的一個命令,在尋找咱們想要的文件時是最快捷的。

對於find命令的使用有一個大體的公式

find 要查找的位置 [限制條件] 要查找的文件名

舉個例子,從根目錄下尋找全部的文件名中包含balabala的文件

file

若是想在查詢完成以後,再接着對它執行一些命令的話,在後面再加上 -exec參數就能夠了

find / -type f -name "*balabala*" -exec ls -l {} \;

file

-exec參數的後面跟上須要執行的command命令就能夠了,最後以分號做爲結束的標誌,可是考慮到各個系統中的分號可能會表明不一樣的意義,因此加上了反斜槓進行轉義。

其中花括號的含義是表明find命令所查詢到的內容,而且花括號兩邊都是須要有空格的

這條命令還有一種等價的寫法,那就是利用管道xargs

xargs有兩個做用,一個就是加-n參數對內容進行分組,另外一個做用就是獲取前一條命令的輸出,而後做爲輸入傳給後面的命令,這個聽起來跟管道符是同樣的,可是若是沒有xargs和管道符的配合是不能實現部分命令的執行的。

看一下後面的這個例子就明白了

file

若是沒有管道符和xargs的配合,後面的命令將直接是在當前目錄下直接執行,也就是說從管道符過來的數據,ls根本沒有理會,而是按照本身的意願執行了本來的功能。

順便再把xargs的分組功能介紹一下

file

再舉一個例子來理解一下上面的這個內容

咱們查找一下當前目錄下的全部以 .txt 來結尾的文件,而後並將其內容進行輸出

file

咱們也能夠按照修改時間對文件進行查找,加入 -mtime 參數就能夠了

爲了方便find的按時間查找,咱們用下面的命令來生成一批文件

首先先了解一下date命令

file

若是想要修改時間的話,咱們可使用 date -s 來修改時間,可是絕對不建議你們這樣改,這樣可能會致使某些功能出現問題。

而後咱們生成一批文件,從十月十五號到十月二五號天天建立一個文件

注意後面的時間都是以今天是十月二十號做爲標準的

for n in `seq 15 20`;do date -s "2019/10/$n";touch test_$n.txt;done

file

file

咱們接着說find命令的按時間查詢

查詢三天之前建立的文件

find . -type f -name "*.txt" -mtime +3

file

查詢第三天建立的文件

find . -type f -name "*.txt" -mtime 3

file

查詢最近三天的文件

find . -type f -name "*.txt" -mtime -3

file

經常使用到的查找命令就是這些了,若是有其餘須要的話,再查看幫助文件就能夠了。

本文由博客一文多發平臺 OpenWrite 發佈!