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