新聞中心
在Linux系統(tǒng)中,文件的匹配查詢是一個(gè)經(jīng)常需要用到的操作。如果只是簡(jiǎn)單地查找某個(gè)文件或某個(gè)目錄下的特定文件,使用一些基本的命令就可以滿足需求。但是當(dāng)需要進(jìn)行高效的多條件匹配時(shí),簡(jiǎn)單的命令可能就不太夠用了。在這種情況下,需要使用一些專門的技巧來(lái)實(shí)現(xiàn)更高效的查詢。

本文將介紹一種實(shí)現(xiàn)多條件匹配的方法,即使用兩個(gè)文件進(jìn)行匹配。這個(gè)方法適用于需要查找滿足多個(gè)條件的文件的情況,比如查找同時(shí)滿足文件名、文件大小和文件類型等多個(gè)條件的文件。
方法概述
這個(gè)方法是通過(guò)比較兩個(gè)文件的內(nèi)容來(lái)實(shí)現(xiàn)的。之一個(gè)文件是一個(gè)列表文件,其中列出了需要匹配的條件,比如文件名、文件大小、文件類型等。第二個(gè)文件是需要進(jìn)行匹配的文件列表,這個(gè)列表包含了所有需要進(jìn)行查詢的文件。程序會(huì)逐一檢查第二個(gè)文件列表中的每個(gè)文件,看它是否滿足之一個(gè)文件列表中列出的所有條件。
如果一個(gè)文件滿足了所有條件,那么它就被認(rèn)為是匹配成功的。程序會(huì)把匹配成功的文件加入到輸出文件列表中。輸出文件列表中列出了所有匹配成功的文件的路徑和文件名。
使用示例
下面是一個(gè)使用示例,假設(shè)我們需要查找滿足以下條件的文件:
– 文件名以“l(fā)og”結(jié)尾
– 文件大小在100KB以上
– 文件類型為普通文件
我們首先需要?jiǎng)?chuàng)建一個(gè)包含這些條件的文件列表文件,比如我們把這個(gè)文件命名為“conditions.txt”。文件內(nèi)容如下:
“`
name=log$
size=+100k
type=file
“`
然后我們需要?jiǎng)?chuàng)建一個(gè)需要進(jìn)行匹配的文件列表文件。比如我們把這個(gè)文件命名為“filelist.txt”。這個(gè)文件包含了所有需要進(jìn)行查詢的文件的路徑和文件名。文件內(nèi)容如下:
“`
/home/user/test/test.log
/home/user/test/test1.log
/home/user/test/test2.jpg
“`
現(xiàn)在我們可以使用下面的命令來(lái)進(jìn)行查詢:
“`
find $(cat filelist.txt) -type f -print0 | xargs -0r grep -ilZf conditions.txt | xargs -0r printf ‘%s\n’
“`
這個(gè)命令的含義是:
– find $(cat filelist.txt) -type f -print0:根據(jù)“filelist.txt”中列出的文件路徑和文件名,查找所有類型為普通文件的文件,并將它們的路徑和文件名輸出到標(biāo)準(zhǔn)輸出。
– grep -ilZf conditions.txt:使用“conditions.txt”中列出的條件來(lái)匹配通過(guò)之一步查找到的文件。可以把這個(gè)步驟看作是“篩選”操作,只有滿足條件的文件才會(huì)被保留下來(lái)。
– xargs -0r printf ‘%s\n’:將通過(guò)第二步“篩選”得到的所有文件的路徑和文件名輸出到標(biāo)準(zhǔn)輸出。
通過(guò)這個(gè)命令,我們可以得到所有滿足條件的文件的路徑和文件名。
方法優(yōu)勢(shì)
這個(gè)方法相對(duì)于其他方法的優(yōu)勢(shì)在于它可以高效地實(shí)現(xiàn)多條件匹配。使用這個(gè)方法可以避免反復(fù)地使用一些簡(jiǎn)單的命令進(jìn)行搜索和篩選,從而提高查詢的效率。這個(gè)方法的另一個(gè)優(yōu)勢(shì)在于它可以輕松地組合不同的條件,滿足不同的查詢需求。
在Linux系統(tǒng)中,文件的匹配查詢是一個(gè)常見(jiàn)的操作。通過(guò)使用兩個(gè)文件來(lái)實(shí)現(xiàn)多條件匹配,可以高效地實(shí)現(xiàn)復(fù)雜的查詢需求。這個(gè)方法適用于需要查找滿足多個(gè)條件的文件的情況,比如查找同時(shí)滿足文件名、文件大小和文件類型等多個(gè)條件的文件。對(duì)于需要進(jìn)行高效查詢的情況,這個(gè)方法是非常有用的。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來(lái)專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220Linux三劍客(sed)-編輯匹配到的文本
sed編輯器是一行一行的處理文件,正在處理的內(nèi)容存放在模式空間(緩沖區(qū))中,處理完畢后按照選項(xiàng)的規(guī)定進(jìn)行輸出或文件的修改。
sed主要用來(lái)自動(dòng)編輯一個(gè)或多個(gè)文件;簡(jiǎn)化歲斗文件的反復(fù)操作,用于非交互編譯文件。
可以使用一個(gè)簡(jiǎn)單的數(shù)字,或是一個(gè)行號(hào)范圍
注意:p的動(dòng)作是:打印匹配行。
1. 原始文件:
2. sed的默認(rèn)動(dòng)作
(1)sed的默認(rèn)動(dòng)作是打印文件中的所有行。
3. 打印特定行
(1)因?yàn)閟ed命令默認(rèn)打印文件中所有行。所以第三行會(huì)被打印兩遍。那如何只打印第三行呢?使用【-n】命令,只打印匹配的行。
(2)使用【-n】命令,只打印匹配到的行
(3)打印行
(4)打印包含模式的行
(5)打印包含模式和指定行號(hào)之間的行
(6)包含模式和包含模式之間的行
(7)
{}執(zhí)行多個(gè)命令(command),使用;隔開(kāi)。=是顯示文件行的行號(hào)。p是打印匹配行
(8)!取反操作
(9)q命令:之一個(gè)模式匹配完成后退出或立即退出,使用該命令打印前5行
(1)使用進(jìn)行正則匹配
(2)其他的正則表達(dá)式
(1)打印出以#開(kāi)頭的行,然后用!進(jìn)行反選,則表示過(guò)濾掉以#開(kāi)頭的行,不會(huì)過(guò)濾掉空格。
(2)匹配以#開(kāi)頭的行,進(jìn)行取反,則打印出非#開(kāi)頭的行,然后其結(jié)果在對(duì)空格開(kāi)頭的行進(jìn)行取反。即
過(guò)濾掉以#開(kāi)頭的行和以空格開(kāi)頭的行。
{}表示在定位行執(zhí)行的命令組。
(3)sed支持對(duì)單個(gè)文件實(shí)現(xiàn)不同的操作,每個(gè)操作用-e參數(shù)。定位到執(zhí)行的行后,使用d命令,直接刪除匹配到的行。
需要注意的是,對(duì)源文件的添加要使用【-i】參數(shù)。
s:使用替換模式替換相應(yīng)模式
(1)在匹配行前面替換字符,使用【s】命令。
(2)在所有行開(kāi)頭替換元素【s】
(3)在所有行的末尾替換元素
(4)指定行,進(jìn)行替換操作
(5)【&】符號(hào)代表的是匹配到的字符。在匹配到字符后,可以使用&代替。
(6)在匹配到行前面添加一行,使用【i】的命令
(7)在匹配行的后面添加一行,使用【a】命令
(8)當(dāng)添加多行時(shí),使用\n來(lái)轉(zhuǎn)義
(9)@代表的是【地址定界符】,一般由三個(gè)組成,坦雀散定讓氏界符可以是/,$,#等特殊字符,此命令表示,匹配特定字符的行進(jìn)行替換。
(10)使用命令【g】修改全文中出現(xiàn)的匹配字符。
(11)若后面接數(shù)字之后在接g,表示匹配的行中,第幾次出現(xiàn)。就替換,2g表示替換行中第二次出現(xiàn)。
(1)刪除以非#號(hào)開(kāi)頭的行,即顯示以#號(hào)開(kāi)頭的行。
(2)刪除之一行
(3)刪除最后一行
(4)刪除指定的行區(qū)間
(5)刪除包含特定單詞的行
本文參考:
Linux下文件搜索、查找、查看命令
1、最強(qiáng)大的搜索命令:find 查找各種文件的命令
2、在文件資料中查找文件:locate
3、搜索命令所在的目錄及別名信息:which
4、搜索命令所在的目錄及幫助文檔路徑:whereis
5、在文件中搜尋
字符串
匹配的行并輸出:grep
6、分頁(yè)顯示一個(gè)文件或任何輸出結(jié)果:more
7、分頁(yè)顯示一個(gè)文件并且可以回頭:less
8、指定顯示前多少行文件內(nèi)容:head
9、指定顯示文件后多少行內(nèi)容:tail
10、查看一個(gè)文件:cat
11、查看文件內(nèi)容多少字符多少行多少字節(jié):wc
12、排序文件內(nèi)容:sort
一、根據(jù) 文件或目錄名稱 搜索
find 【搜索目錄】【-name或者-iname】【搜索字符】:-name和-iname的區(qū)別一個(gè)區(qū)分大小寫,一個(gè)不區(qū)分大小寫
eg:在/etc 目錄下搜索名字為init的文件或目錄
①、find /etc -name init (精準(zhǔn)搜索,名字必須為 init 才能搜索的到)
②、find /etc -iname init (精準(zhǔn)搜索,名字必須為 init或者有字母大寫也能搜索的到)
③、find /etc -name *init (模糊搜索,以 init 結(jié)尾的文件或目錄名)
④、find /etc -name init??? (模糊搜索,? 表示單個(gè)字符,即搜索到 init___)
二、根據(jù) 文件大小 搜索
eg:在
根目錄
下查找大于 100M 的文件
find / -size +202300
這里 +n 表示大于,-n 表示小于,n 表示等于
1 數(shù)據(jù)塊 == 512 字節(jié) 0.5KB,也就是1KB等于2數(shù)據(jù)塊
100MB ==KB202300數(shù)據(jù)塊
三、根據(jù) 所有者和所屬組 搜索
①、在home目錄下查詢所屬組為 root 的文件
find /home -group root
②、在home目錄下查詢所有者為 root 的文件
find /home -user root
四、根據(jù) 時(shí)間屬性 搜索
find 【路徑】【選項(xiàng)】【時(shí)間】
選項(xiàng)有下面三種:-amin 訪問(wèn)時(shí)間
cmin 文件屬性被更改
mmin 文件內(nèi)容被修改
時(shí)間:螞喚+n,-n,n分別表示超過(guò)n分鐘,n分鐘以內(nèi)和n分鐘
eg:在 /etc 目錄下查找5 分鐘內(nèi)被修改過(guò)屬性的文件和目錄
find /etc -cmin -5
五、根據(jù)
文件類型
或i節(jié)點(diǎn) 搜索
-type 根據(jù)文件類型查找:
f表示文件,d表示目錄,l表示軟鏈接
eg:查找 /home 目錄下文件類型是目錄的
find /home -type d
-inum 根據(jù)i節(jié)點(diǎn)查找
eg:查找 /tmp 目錄下i節(jié)點(diǎn)為400342的文件或目錄
find /tmp -inum
六、組轎爛合條件 搜索
這里有兩個(gè)參數(shù):
?、?、-a 表示兩個(gè)條件同時(shí)滿足(and)
?、?、-o 表示兩個(gè)條件滿足任意一個(gè)即可(or)
范例:查找/etc目錄下大悶帆凱于80MB同時(shí)小于100MB的文件
find /etc -size +a -size
語(yǔ)法:locate【文件名】 -i 不區(qū)分大小寫
注意:這里和 find 命令是有區(qū)別的,find是全盤檢索,而locate 是在文件資料庫(kù)中進(jìn)行搜索。所以locate命令的執(zhí)行要比f(wàn)ind命令執(zhí)行速度快很多。但是這里有個(gè)問(wèn)題,文件資料庫(kù)是需要不斷更新的。我們新創(chuàng)建的文件如果不更新 文件資料庫(kù),使用 locate 是查找不到的。
updatedb 手動(dòng)更新資料庫(kù),但是對(duì)于/tmp目錄下的新建文件,是更新不到文件資料庫(kù)的,因?yàn)?tmp目錄不屬于文件資料庫(kù)的收錄范圍。
eg:locate hcf
功能描述:搜索命令所在的目錄及別名信息
語(yǔ)法:which【命令】
eg:which ls
功能描述:搜索命令所在的目錄及幫助文檔路徑
語(yǔ)法:whereis【命令】
eg:whereis ls
功能描述:在文件中搜尋字符串匹配的行并輸出
語(yǔ)法:grep -iv 【指定字符串】【文件】
i 不區(qū)分大小寫
v 排除指定字符串
eg:查找 /root/install.log 文件中包含 mysql 字符串的行,并輸出
grep mysql /root/install.log
本搜索工具,根據(jù)用戶指定的模式,對(duì)目標(biāo)文件逐行進(jìn)行匹配檢查,打印匹配到的行
grep是在文件中搜索匹配的字符串,是在文件中進(jìn)行內(nèi)容搜索,這個(gè)命令后面用到的比較多
描述:
分頁(yè)顯示一個(gè)文件或任何輸出結(jié)果
用于查看純文本文件(較長(zhǎng)的)格式
格式:
more 文件
less 與 more 類似,但使用 less 可以隨意瀏覽文件,而 more 僅能向前移動(dòng),卻不能向后移動(dòng),而且 less 在查看之前不會(huì)加載整個(gè)文件。
head
用于顯示指定文件開(kāi)始多少行內(nèi)容
命令參數(shù):
-n 10 顯示前10行
-n -10 正常輸出但不顯示最后的10行
eg:顯示new.txt的前兩行內(nèi)容
head -n 2 new.txt
head -2 new.txt
tail
用于顯示指定文件末尾多少行內(nèi)容
命令參數(shù):
-n 10 顯示后面10行
-f 持續(xù)刷新顯示的內(nèi)容
eg:顯示new.txt的末尾兩行內(nèi)容
tail -n 2 new.txt
tail -2 new.txt
eg:指定從第二行開(kāi)始顯示
tail -n +2 new.txt
描述:一次顯示整個(gè)文件內(nèi)容
cat 命令 用于查看純文本文件(較短)
cat …
描述:wc 命令默認(rèn)情況下會(huì)打印
換行符
數(shù)、單詞數(shù)和字符數(shù)。
用法:wc
用法:sort
關(guān)于兩個(gè)文件多條件匹配linux的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都創(chuàng)新互聯(lián)科技公司主營(yíng):網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、小程序制作、成都軟件開(kāi)發(fā)、網(wǎng)頁(yè)設(shè)計(jì)、微信開(kāi)發(fā)、成都小程序開(kāi)發(fā)、網(wǎng)站制作、網(wǎng)站開(kāi)發(fā)等業(yè)務(wù),是專業(yè)的成都做小程序公司、成都網(wǎng)站建設(shè)公司、成都做網(wǎng)站的公司。創(chuàng)新互聯(lián)公司集小程序制作創(chuàng)意,網(wǎng)站制作策劃,畫冊(cè)、網(wǎng)頁(yè)、VI設(shè)計(jì),網(wǎng)站、軟件、微信、小程序開(kāi)發(fā)于一體。
當(dāng)前名稱:Linux實(shí)現(xiàn)多條件匹配:兩個(gè)文件的高效查詢技巧(兩個(gè)文件多條件匹配linux)
文章網(wǎng)址:http://www.dlmjj.cn/article/cooiidg.html


咨詢
建站咨詢
