1. 程式人生 > >Ubuntu下查詢命令

Ubuntu下查詢命令

在Linux系統下經常用到的查詢命令有:

whereis
locate
find
grep

1。whereis命令用來查詢命令的位置,包括執行檔案、原始碼和手冊頁檔案

~$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz

可以跟上一下引數;

-b 只查詢二進位制檔案 -m 只查詢幫助檔案 -s 只查詢原始碼 -u 排除指定型別檔案 -f 只顯示檔名 -B <目錄> 在指定目錄下查詢二進位制檔案 -M <目錄> 在指定目錄下查詢幫助檔案 -S <目錄> 在指定目錄下查詢原始碼

whereis -m ls
ls: /usr/share/man/man1/ls.1.gz

2。locate <檔名稱> 在檔案索引資料庫中搜索檔案,這個資料庫由updatedb命令生成,/etc/cron.daily/mlocate 檔案每天執行一次來更新資料庫,我們也可以使用一下命令來手動更新:

$ sudo updatedb

要查詢檔案:

locate <檔名>
$ locate apt-get
/usr/bin/apt-get
/usr/share/bash-completion/completions/apt-get
/usr/share/bash-completion/completions/slapt-get
/usr/share/man/de/man8/apt-get.8.gz
/usr/share/man/es/man8/apt-get.8.gz
/usr/share/man/fr/man8/apt-get.8.gz
/usr/share/man/it/man8/apt-get.8.gz
/usr/share/man/ja/man8/apt-get.8.gz
/usr/share/man/man8/apt-get.8.gz
/usr/share/man/pl/man8/apt-get.8.gz
/usr/share/man/pt/man8/apt-get.8.gz
//可以跟上-c引數   統計查詢到的檔案數量
$ locate ls -c
20438

3。find命令通用格式:find pathname -options [-print -exec -ok] 可以跟上一下引數:

pathname:查詢路徑
-option:主要選項如下:
-name:按照檔名稱查詢
-perm:按照檔案許可權查詢
-prune:不在當前指定的路徑查詢。如果同時指定了-depth選項,則prune被忽略
-user:按照檔案屬主查詢
-group:按照檔案屬組查詢
-mtime -n +n:按照檔案更改時間查詢。-n 指距離現在時間n天以內;+n n天以外
-nogroup:查詢無效屬組檔案
-nouser:查詢無效屬主檔案
-newer file1 !file2:查詢更改時間比file1新比file2舊的檔案
-type:查詢某一型別檔案
b:塊裝置檔案
d:目錄
c:字元裝置檔案
P:管道檔案
l:符號連結檔案
f:普通檔案
-size n[c]查詢檔案長度為n塊的檔案 有[c]表示檔案長度以位元組計
-depth:查詢時,首先查詢當前目錄檔案,然後再在其子目錄查詢
-fstype:查詢位於某一型別檔案系統中的檔案,檔案系統型別可在/etc/fstab中找到
-mount:查詢檔案不跨越檔案系統mount點
-follow:如遇到連結檔案,則跟蹤至連結所指向檔案
-cpio:對匹配的檔案使用cpio命令,將檔案備份到磁帶裝置中 
-print:將匹配的檔案輸出到標準輸出
-exec:對匹配的檔案執行所給的shell命令。形式為:command { } \;注意{ }和\;之間的空格
-ok:和-exec作用相同。只不過以一種更安全的模式執行該引數所給的shell命令。在執行每個命令之前,都會給出提示,讓使用者確定是否執行

常用的方法有;

find pathname -name filename
//可以跟上萬用字元 
find pathname -mtime 0  //查詢24小時修改過的檔案
find pathname -perm 許可權 //查詢制定許可權的檔案

pathname 表示命令所查詢的目錄路徑。譬如用 . 來表示當前目錄,用 / 來表示系統根目錄。 (1)find / -name httpd.conf  #在根目錄下查詢檔案httpd.conf,表示在整個硬碟查詢 (2)find /etc -name httpd.conf  #在/etc目錄下檔案httpd.conf (3)find /etc -name ‘srm’  #使用萬用字元*(0或者任意多個)。表示在/etc目錄下查詢檔名中含有字串‘srm’的檔案 (4)find . -name ‘srm*’   #表示當前目錄下查詢檔名開頭是字串‘srm’的檔案

3。grep命令是一種強大的文字搜尋工具,它能使用正則表示式搜尋文字,並把匹 配的行打印出來。grep全稱是Global Regular Expression Print,表示全域性正則表示式版本,它的使用許可權是所有使用者。 命令格式:

grep [option] pattern file

命令引數:

-a   --text   #不要忽略二進位制的資料。   
-A<顯示行數>   --after-context=<顯示行數>   #除了顯示符合範本樣式的那一列之外,並顯示該行之後的內容。   
-b   --byte-offset   #在顯示符合樣式的那一行之前,標示出該行第一個字元的編號。   
-B<顯示行數>   --before-context=<顯示行數>   #除了顯示符合樣式的那一行之外,並顯示該行之前的內容。   
-c    --count   #計算符合樣式的列數。   
-C<顯示行數>    --context=<顯示行數>或-<顯示行數>   #除了顯示符合樣式的那一行之外,並顯示該行之前後的內容。   
-d <動作>      --directories=<動作>   #當指定要查詢的是目錄而非檔案時,必須使用這項引數,否則grep指令將回報資訊並停止動作。   
-e<範本樣式>  --regexp=<範本樣式>   #指定字串做為查詢檔案內容的樣式。   
-E      --extended-regexp   #將樣式為延伸的普通表示法來使用。   
-f<規則檔案>  --file=<規則檔案>   #指定規則檔案,其內容含有一個或多個規則樣式,讓grep查詢符合規則條件的檔案內容,格式為每行一個規則樣式。   
-F   --fixed-regexp   #將樣式視為固定字串的列表。   
-G   --basic-regexp   #將樣式視為普通的表示法來使用。   
-h   --no-filename   #在顯示符合樣式的那一行之前,不標示該行所屬的檔名稱。   
-H   --with-filename   #在顯示符合樣式的那一行之前,表示該行所屬的檔名稱。   
-i    --ignore-case   #忽略字元大小寫的差別。   
-l    --file-with-matches   #列出檔案內容符合指定的樣式的檔名稱。   
-L   --files-without-match   #列出檔案內容不符合指定的樣式的檔名稱。   
-n   --line-number   #在顯示符合樣式的那一行之前,標示出該行的列數編號。   
-q   --quiet或--silent   #不顯示任何資訊。   
-r   --recursive   #此引數的效果和指定“-d recurse”引數相同。   
-s   --no-messages   #不顯示錯誤資訊。   
-v   --revert-match   #顯示不包含匹配文字的所有行。   
-V   --version   #顯示版本資訊。   
-w   --word-regexp   #只顯示全字符合的列。   
-x   --line-regexp   #只顯示全列符合的列。   
-y   #此引數的效果和指定“-i”引數相同。

正則:

^  #錨定行的開始 如:'^grep'匹配所有以grep開頭的行。    
$  #錨定行的結束 如:'grep$'匹配所有以grep結尾的行。    
.  #匹配一個非換行符的字元 如:'gr.p'匹配gr後接一個任意字元,然後是p。    
*  #匹配零個或多個先前字元 如:'*grep'匹配所有一個或多個空格後緊跟grep的行。    
.*   #一起用代表任意字元。   
[]   #匹配一個指定範圍內的字元,如'[Gg]rep'匹配Grep和grep。    
[^]  #匹配一個不在指定範圍內的字元,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一個字母開頭,緊跟rep的行。    
\(..\)  #標記匹配字元,如'\(love\)',love被標記為1。    
\<      #錨定單詞的開始,如:'\<grep'匹配包含以grep開頭的單詞的行。    
\>      #錨定單詞的結束,如'grep\>'匹配包含以grep結尾的單詞的行。    
x\{m\}  #重複字元x,m次,如:'0\{5\}'匹配包含5個o的行。    
x\{m,\}  #重複字元x,至少m次,如:'o\{5,\}'匹配至少有5個o的行。    
x\{m,n\}  #重複字元x,至少m次,不多於n次,如:'o\{5,10\}'匹配5--10個o的行。   
\w    #匹配文字和數字字元,也就是[A-Za-z0-9],如:'G\w*p'匹配以G後跟零個或多個文字或數字字元,然後是p。   
\W    #\w的反置形式,匹配一個或多個非單詞字元,如點號句號等。   
\b    #單詞鎖定符,如: '\bgrep\b'只匹配grep。

從檔案內容查詢不匹配指定字串的行 命令格式:grep –v “被查詢的字串” 檔名

遞迴搜尋某個目錄以及子目錄下的所有檔案 命令格式:grep –r “被查詢的字串” 檔案目錄

在多個檔案中檢索某個字串

命令格式: grep “被查詢的字串t” filename1 filename2 filename3 … grep “被查詢的字串” *.log

轉載來自https://blog.csdn.net/Wangdada111/article/details/75151845?utm_source=copy