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

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


咨詢
建站咨詢
