Linux中如何查詢特定的資料是否在目錄或檔案中

2022-10-09 17:33:11 字數 4159 閱讀 3901

乙個很簡單的方式就是使用grep命令,grep命令是乙個強大有效可靠並且很流行的命令列工具,用於查詢對應的資料報含檔案或者目錄中在linux環境中。

為了便於學習,我們準備了以下檔案,具體想要查詢以實際為準。

[root@localhost sharplee]# ls -l

total 40

-rw-r--r--. 1 root root 15606 feb 26 10:12 jetty.sh

-rw-r--r--. 1 root root 0 mar 2 09:06 myfile1

-rw-r--r--. 1 root root 0 dec 10 2022 myfile2

-rw-r--r--. 1 root root 0 dec 10 2022 myfile3

-rw-r--r--. 1 root root 0 mar 2 09:35 myfile4

-rw-r--r--. 1 root root 0 dec 10 2022 myfile6

-rw-r--r--. 1 root root 8 mar 3 08:21 test

-rw-r--r--. 1 root root 28 mar 6 08:52 test1.sh

-rw-r--r--. 1 root root 29 mar 6 08:53 test2.sh

-rw-r--r--. 1 root root 11 mar 6 08:53 test3.sh

-rw-r--r--. 1 root root 10 mar 2 08:48 test.sh

-rw-r--r--. 1 root root 241 mar 3 08:16 wcfile

查詢包含cd單詞的檔案

通過執行以下命令來檢視linux系統/home/sharplee/目錄下的檔案中包含cd單詞的檔案。

[root@localhost sharplee]# grep 

-rwi

/home/sharplee 

-e"cd"

/home/sharplee/jetty.sh:cd"$jetty_home"

cd"$jetty_base"

/home/sharplee/jetty.sh:cd\"$jetty_base\"

/home/sharplee/test1.sh:cd/home/

/home/sharplee/test1.sh:cdsharplee

/home/sharplee/test1.sh:cd..

/home/sharplee/test2.sh:cd..

/home/sharplee/test2.sh:cd/home/sharplee

/home/sharplee/test2.sh:cd~

上面的命令引數的含義是-r是用於遞迴子目錄,可以查詢當前目錄下的所有子目錄包含特定查詢資料的目錄,-i的含義是不區分大小寫,-w(word)的含義是查詢對應的單詞。單詞是什麼,單詞就是有特殊符號分割的對應的字串。

下面來看一下通過單詞查不到資料的例子。

-rwi  -e"你好"

我們可以看出通過該命令啥也查不出來,但是這個目錄下的檔案中卻有檔案包含你好,下面列印的就是該檔案中包含你好

[root@localhost sharplee]# cat wcfile

你好呀~歡迎**linux教程

下面來看一下wc使用

wc 命令1

wc 命令2

wc command

wc cc

wc ***************************

mm cccccccccccccccccccxx

啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦

llllllllllllllllllllllllll

通過上面查詢可以看出,確實包含有你好,為啥會查不到呢?其實剛才上面那個命令已經做了很好的解釋,grep 後面加了-w是用於查詢對應的單詞的。單詞是啥就是上面說的,用特殊符號分割的。下面來看一下如何查到這個單詞。

[root@localhost sharplee]# grep -rwi /home/sharplee -e "你好呀"

/home/sharplee/wcfile:你好呀~歡迎**linux教程

[root@localhost sharplee]#

通過上面可以看出,grep 加了-w命令只能查到對應單詞的資料。那麼如何檢視包含該資料並且不是單詞的呢。

查詢包含"你好"對應的檔案

通過上面可以看出查詢你好,加了-w是不能準確匹配到包含你好的檔案,而是定位的是包含你好單詞的檔案,接下來看一下如何查詢對應的資料報含的檔案,其實很簡單,就是把-w去掉,畢竟-w是用於查單詞的。

[root@localhost sharplee]# grep -ri /home/sharplee -e "你好"

/home/sharplee/wcfile:你好呀~歡迎**linux教程

[root@localhost sharplee]#

可以看出去掉-w之後,就可以查詢包含相應關鍵的檔案了。

查詢包含"你好"對應的檔案的行數

上面可以看到查詢到了對應的字串包含的檔案和目錄,但是不知道這個對應的字串是在檔案的哪個位置,為了很好的定位查到的資料,這個時候可以列印出檔案對應資料的行數字置。

[root@localhost sharplee]# grep -ri

n/home/sharplee -e "你好"

/home/sharplee/wcfile:1:你好呀~歡迎**linux教程

[root@localhost sharplee]#

從上面執行的命令可以很快定位到查詢的資料在對應的檔案的第一行,就是綠色標準的地方,其實就是在命令列後面加了乙個-n選項。

查詢包含"cd"對應的特定字尾名的檔案

可以看出上面命令都是查詢對應目錄下的所有的檔案,那麼可不可以只查某些字尾名的檔案呢,答案是肯定的,可以通過增加引數來控制只查詢對應目錄下特定字尾的檔案。

[root@localhost sharplee]# grep -rin 

--include="*.sh"

/home/sharplee -e "cd"

/home/sharplee/jetty.sh:250:cd

/home/sharplee/jetty.sh:261:cd

/home/sharplee/jetty.sh:487:cd

/home/sharplee/test1.sh:1:cd/home/

/home/sharplee/test1.sh:2:cdsharplee

/home/sharplee/test1.sh:3:cd..

/home/sharplee/test2.sh:1:cd..

/home/sharplee/test2.sh:2:cd/home/sharplee

/home/sharplee/test2.sh:3:cd~

如何查詢特定IP位址

1.使用mysql內建函式 我試著使用位移位將ip位址值轉換為整數。mysql有執行這些轉換的內建函式。我以前從來沒有聽說過這些活動,所以我想我可以玩一玩。在下面的演示中,我將乙個ip位址字串拖到mysql引擎中,然後使用inet aton 和inet ntoa 兩種方法將ip位址轉換為乙個數字,然...

Linux 查詢檔案中的特定字串

find 與 grep組合查詢 find name 檔案型別 xargs grep n 查詢內容 檔案型別可正規表示式通配,表示當前目錄下進行查詢,也可自由指定目錄.比如 find etc name properties xargs grep n cachesize 查詢 etc目錄下,包含cach...

查詢資料庫中滿足條件的特定行資料

查詢資料庫中滿足條件的特定行資料,在這裡主要給出三條查詢語句,其中第三條主要是針對sql server2005資料庫的,因為其中的row number 函式只有在sql server2005中才支援。例子 我資料庫中有乙個table表,表中一共有50條資料,我現在要查詢第21到30條資料,我可以對這...