一、常用的文本查找命令
grep、egrep命令
grep:文本搜索工具,根據用戶指定的文本模式對目標文件進行逐行搜索,先是能夠被模式匹配到的行。后面跟正則表達式,讓grep工具相當強大。-E之后還支持擴展的正則表達式。
# grep ?[options] ?'PATTERN' ?file ...
--color=auto:高亮顯示被匹配的關鍵字
-v:反向
-o:僅顯示被模式匹配的字串,而非整行
- i:不區分大小寫
-E:支持擴展的正則表達式
-A+n:僅顯示被匹配到的行和其上n行
-B+n:僅顯示被匹配到的行和其下n行
-C+n:僅顯示被匹配到的行和其上、下n行
# egrep ?[options] ?'PATTERN' ?file ...
選項和grep相同,egrep=grep -E ?,這里不再繼續說明。
locate命令
locate:其實是“find -name”的另一種寫法,但是要比后者快得多,原因在于它不搜索具體目錄,而是搜索一個數據庫(/var/lib/locatedb),這個數據庫中含有本地所有文件信息。Linux系統自動創建這個數據庫,并且每天自動更新一次,所以使用locate命令查不到最新變動過的文件。為了避免這種情況,可以在使用locate之前,先使用updatedb命令,手動更新數據庫。
find命令
find:實時查找,精確匹配,速度略慢
#find ?[options] ?[查找路徑] ?[查找條件] ?[處理動作]
默認:查找路徑:當前目錄
查找條件:查找指定路徑下的所有文件
處理動作:顯示在標準輸出上
二、find命令詳解
(一)、查找條件
-name ?"文件名稱":支持文件名通配
-iname "文件名稱":支持文件名通配,不區分大小寫
-user ?"用戶名":根據屬主查找
-group ?"組名":根據屬組查找
-uid ? ?"UID":根據UID查找
-gid ? ?"GID":根據GID查找
-nouser:查找沒有屬主的文件
-nogroup:查找沒有屬組的文件
◆當一個用戶被刪除,那么該用戶的文件就會變成沒有屬主或屬組的文件
(二)、組合條件
-a:和與相同,同時滿足
-o:與或相同,滿足其一皆可
-not、!:與非相同,取反
-type:根據文件類型查找
f:普通文件
d:目錄
b:塊設備
c:字符設備
l:符號鏈接文件
p:命令管道工具
s:套接字文件
根據文件大小查找
-size ?[+|-]單位
+2M:大于2M的
-2M:小于1M的
2M:1.1~2M的
常用單位:k、M、G
例:大于2M的
# find -size +2M
根據時間戳查找
以天為單位(tim
-atime ? [+|-]n:被訪問的n天
-mtime ?[+|-]n:被修改的n天
-ctime ? [+|-]n:被創建的n天
+2:大于3天的
- 2:小于2天的
2:2天到3天的
以分鐘為單位(min)
-amin ? [+|-]n:被訪問的n分鐘
-mmin ?[+|-]n:被修改的n分鐘
-cmin ? ?[+|-]n:被創建的n分鐘
+2:大于3分鐘
-2:小于2分鐘
2:2分鐘到3分鐘
根據權限查找
-perm ?[+|-]權限
MODE:精確匹配
+MODE:任何一類用戶的任何一位權限匹配,常用語查找某類用戶的特點權限是否存在
-MODE:每類用戶的任何一位都匹配,每類用戶的指定要檢查的權限都匹配
(三)、處理動作
-print:打印在標準輸出上
-ls:以長格式輸出各文件信息
-exec COMMAND\:對查找的文件執行制定的命令
-ok COMMAND\:交互式的-exec
find把查找到的文件一次性的傳遞給-exec所指定的命令
如果查到到的是多個文件要加{},{}是占位符,表示接受前面find查找的文件,并對文件依次執行動作
格式: find -exec {} \;
例:# find -iname *.sh -exec chmod a-x {} \;
xargs命令
find|xargs COMMAND 一次性接受一批文件,通過管道直接修改
例:# find -iname text.sh | xargs chmod a+x