Linux文件查找命令詳解

對(duì)于文件查找,我們最好用的還是屬于find命令了,在說(shuō)find命令之前,先把另外幾個(gè)查找命令介紹一下。

目錄

0x01 查詢命令介紹

0x02 find命令介紹

0x01 查詢命令介紹

在介紹之前,首先先了解一個(gè)特殊變量——PATH

PATH下存放著命令所在的路徑,我們?cè)趫?zhí)行命令的時(shí)候先會(huì)在PATH變量中從前到后挨個(gè)路徑進(jìn)行查找,找到一條之后就直接停止了,所以就需要把想要先生效的路徑放到前面,每一個(gè)路徑中間使用冒號(hào)進(jìn)行分隔

file

which命令

通過(guò)which命令,我們可以找到某一個(gè)命令所在的位置,它是通過(guò)PATH路徑進(jìn)行查詢的

file

whereis命令

whereis命令也可以跟which一樣搜索路徑,但是他還會(huì)搜索一些其他的內(nèi)容,它也是通過(guò)PATH路徑進(jìn)行查詢的

file

如果只想搜索二進(jìn)制命令的話,需要增加 -b 參數(shù)

file

locate命令

locate也能查詢命令的相關(guān)路徑以及幫助等,但是它不是從PATH路徑中進(jìn)行遍歷的,它是從Linux中的一個(gè)數(shù)據(jù)庫(kù)mlocate.db進(jìn)行查詢的,mlocate.db數(shù)據(jù)庫(kù)位于/var/lib/mlocate/mlocate.db,由于它所展示的內(nèi)容太多,所以這里我使用 -n 參數(shù)來(lái)指定顯示的行數(shù)

file

那我們?cè)倥e一個(gè)例子來(lái)進(jìn)行查詢

我們?cè)趓oot目錄下創(chuàng)建一個(gè)balabala.txt的文件

file

然后使用下列命令來(lái)進(jìn)行查詢

locate balabala
file

明明存在這個(gè)文件為什么查不到呢?

這是由于locate進(jìn)行查找是在mlocate.db數(shù)據(jù)庫(kù)進(jìn)行查找的,但是我們剛剛創(chuàng)建的這個(gè)文件并不在這個(gè)數(shù)據(jù)庫(kù)中,所以我們需要使用updatedb進(jìn)行更新數(shù)據(jù)庫(kù)

file

在更新完后就可以正常查詢到了,經(jīng)過(guò)查詢可以得知updatedb會(huì)每天自動(dòng)執(zhí)行一次

file

但是這個(gè)命令我們一般是不會(huì)用到的

0x02 find命令介紹

與上面的幾個(gè)命令相比,find的速度是最慢的,因?yàn)閒ind是從硬盤(pán)里進(jìn)行查找的,但是find命令也是我們最常用的一個(gè)命令,在尋找我們想要的文件時(shí)是最快捷的。

對(duì)于find命令的使用有一個(gè)大致的公式

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

舉個(gè)例子,從根目錄下尋找所有的文件名中包含balabala的文件

file

如果想在查詢完成之后,再接著對(duì)它執(zhí)行一些命令的話,在后面再加上 -exec參數(shù)就可以了

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

-exec參數(shù)的后面跟上需要執(zhí)行的command命令就可以了,最后以分號(hào)作為結(jié)束的標(biāo)志,但是考慮到各個(gè)系統(tǒng)中的分號(hào)可能會(huì)代表不同的意義,所以加上了反斜杠進(jìn)行轉(zhuǎn)義。

其中花括號(hào)的含義是代表find命令所查詢到的內(nèi)容,并且花括號(hào)兩邊都是需要有空格的

這條命令還有一種等價(jià)的寫(xiě)法,那就是利用管道xargs

xargs有兩個(gè)作用,一個(gè)就是加-n參數(shù)對(duì)內(nèi)容進(jìn)行分組,另一個(gè)作用就是獲取前一條命令的輸出,然后作為輸入傳給后面的命令,這個(gè)聽(tīng)起來(lái)跟管道符是一樣的,但是如果沒(méi)有xargs和管道符的配合是不能實(shí)現(xiàn)部分命令的執(zhí)行的。

看一下后面的這個(gè)例子就明白了

file

如果沒(méi)有管道符和xargs的配合,后面的命令將直接是在當(dāng)前目錄下直接執(zhí)行,也就是說(shuō)從管道符過(guò)來(lái)的數(shù)據(jù),ls根本沒(méi)有理會(huì),而是按照自己的意愿執(zhí)行了原本的功能。

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

file

再舉一個(gè)例子來(lái)理解一下上面的這個(gè)內(nèi)容

我們查找一下當(dāng)前目錄下的所有以 .txt 來(lái)結(jié)尾的文件,然后并將其內(nèi)容進(jìn)行輸出

file

我們也可以按照修改時(shí)間對(duì)文件進(jìn)行查找,加入 -mtime 參數(shù)就可以了

為了方便find的按時(shí)間查找,我們用下面的命令來(lái)生成一批文件

首先先了解一下date命令

file

如果想要修改時(shí)間的話,我們可以使用 date -s 來(lái)修改時(shí)間,但是絕對(duì)不建議大家這樣改,這樣可能會(huì)導(dǎo)致某些功能出現(xiàn)問(wèn)題。

然后我們生成一批文件,從十月十五號(hào)到十月二五號(hào)每天創(chuàng)建一個(gè)文件

注意后面的時(shí)間都是以今天是十月二十號(hào)作為標(biāo)準(zhǔn)的

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

我們接著說(shuō)find命令的按時(shí)間查詢

查詢?nèi)煲郧皠?chuàng)建的文件

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

查詢第三天創(chuàng)建的文件

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

查詢最近三天的文件

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

常用到的查找命令就是這些了,如果有其他需要的話,再查看幫助文件就可以了。

文章首發(fā)公眾號(hào):無(wú)心的夢(mèng)囈(wuxinmengyi)

這是一個(gè)記錄紅隊(duì)學(xué)習(xí)、信安筆記,個(gè)人成長(zhǎng)的公眾號(hào)

掃碼關(guān)注即可

file
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • (1)文件查找作用:在文件系統(tǒng)上查找符合條件的文件 ?文件查找:locate, find 非實(shí)時(shí)查找(數(shù)據(jù)庫(kù)查找)...
    楠人幫閱讀 528評(píng)論 0 0
  • 1、文件和目錄: # cd /home 進(jìn)入 '/home' 目錄 # cd .. ...
    XDgbh閱讀 2,144評(píng)論 0 1
  • Linux下一切皆文件,但是文件由于文件的屬性的不同,在查找上可以針對(duì)不同的文件做相應(yīng)的查找以便加快查詢速度和減少...
    常青藤成閱讀 1,123評(píng)論 0 0
  • which 查看可執(zhí)行文件的位置 命令格式:which 可執(zhí)行文件名稱 命令功能:which指令會(huì)在PATH變量指...
    upupSue閱讀 772評(píng)論 0 1
  • 01 咖啡館里,他專注地翻著書(shū)頁(yè),她則低頭攪拌著咖啡。 書(shū)頁(yè)的翻動(dòng)聲,和時(shí)而鋼勺碰撞瓷器的聲音在空氣里纏綿,不絕于...
    一直溫暖如歌閱讀 1,936評(píng)論 12 48

友情鏈接更多精彩內(nèi)容