參考https://blog.csdn.net/allyli0022/article/details/77989664
一、find
根據文件的屬性進行查找,如文件名,文件大小,所有者,所屬組,是否為空,訪問時間,修改時間等
基本格式:find path expression
1.按照文件名查找
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’的文件
二、grep
根據文件的內容進行查找,會對文件的每一行按照給定的模式(patter)進行匹配查找
基本格式:find expression
1.主要參數
[options]主要參數:
-c:只輸出匹配行的計數。
-i:不區分大小寫
-h:查詢多文件時不顯示文件名。
-l:查詢多文件時只輸出包含匹配字符的文件名。
-n:顯示匹配行及行號。
-s:不顯示不存在或無匹配文本的錯誤信息。
-v:顯示不包含匹配文本的所有行。
pattern正則表達式主要參數:
\: 忽略正則表達式中特殊字符的原有含義。
^:匹配正則表達式的開始行。
^#: 以#開頭
#$: 以#結尾
^$: 空行
|: 或者
$: 匹配正則表達式的結束行。
\<:從匹配正則表達 式的行開始。
\>:到匹配正則表達式的行結束。
[ ]:單個字符,如[A]即A符合要求 。
[ - ]:范圍,如[A-Z],即A、B、C一直到Z都符合要求 。
.:所有的單個字符。
* :有字符,長度可以為0。
例如:
1、grep查找文件中匹配的內容
[root@bogon 桌面]# grep 'test' t* #顯示所有以t開頭的文件中包含 test的行
test1:111111111111
[root@bogon 桌面]# cat test.txt
test1:111111111111
tt:
xx: 111123444
a: 1
b: 2
c:11
2、grep查找日志
[root@bogon httpd]# grep -c '503' /var/log/httpd/error_log # 搜索日志,查詢有多少條503錯誤
0
[root@bogon httpd]# grep -n 'error' /var/log/httpd/error_log # 搜索含有 error 字樣的行,並且輸出行號
[root@bogon httpd]# grep -nv 'error' /var/log/httpd/error_log #搜索沒有 error 字樣的行,並且輸出行號
1:[Wed Dec 05 17:44:34.732664 2018] [suexec:notice] [pid 10494] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
2:AH00557: httpd: apr_sockaddr_info_get() failed for bogon
3、搜索尋找安裝的軟件版本有幾個
rpm -qa | grep -i python # centos下查看安裝的Python版本,不區分大小寫,-q(查詢)-a(所有)
注意:rpm,Redhat Package Manager,即為紅帽公司為RHEL開發的專用包管理器,后來更改為RPM Package Manager,類似於GNU項目,使用遞歸命名,GNU's Not Unix.
4、過濾配置文件的注釋符號#
[root@bogon httpd]# grep -v '#' /etc/httpd/conf/httpd.conf # -v:表示不包含匹配文本的所有行
5、查詢每個網卡和ip地址
[root@bogon httpd]# ifconfig | grep -n inet # -n:顯示匹配行及行號
6、統計字符串出現的次數
[root@bogon 桌面]# cat test.txt
test1:111111111111
tt:
xx: 111123444
a: 1
b: 2
c:11
[root@bogon 桌面]# grep -c 'tt' test.txt # -c:只輸出匹配行的計數
1
[root@bogon 桌面]# grep -n 'tt' test.txt # -n:顯示匹配行及行號
2:tt:
7、只列出文件名
[root@bogon zabbix]# grep -l 'PidFile' *.conf # -l:查詢多文件時只輸出包含匹配字符的文件名
zabbix_agentd.conf
zabbix_server.conf
8、精准全匹配搜索(-w)
[root@bogon zabbix]# grep -w 'PidFile' zabbix_agentd.conf
### Option: PidFile
# PidFile=/tmp/zabbix_agentd.pid
PidFile=/var/run/zabbix/zabbix_agentd.pid
9、高亮顯示搜索結果(--color)
[root@bogon zabbix]# grep --color apache /etc/passwd
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
三、which
查看可執行文件的位置,在PATH變量指定的路徑中,搜索某個系統命令的位置,並且返回第一個搜索結果。也就是說,使用which命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令。
四、whereis
查看可執行文件的位置及相關文件,
whereis命令會查找一個記錄系統內文件信息的數據庫文件,所以速度會很快。缺點是數據庫文件並不是實時更新,默認情況一星期更新一次,因此如果最近刪除的文件或者創建的文件是有可能錯誤的顯示的。為了防止這種情況,可以手動的強制更新數據庫文件。


五、locate
配合數據庫緩存,快速查看文件位置。可以快速的找到文件的位置,因為locate查找的是數據庫的文件來確定文件的位置,而並不是深入各個文件系統查找。一般情況下,數據庫文件通過corntab自動更新,通常每天更新一次。