查詢目錄下的所有檔案中是否含有某個字串
find .|xargs grep -ri "ibm" (r:遞迴,i:忽略大小寫)
查詢目錄下的所有檔案中是否含有某個字串,並且只列印出檔名
find .|xargs grep -ri "ibm" -l
1.正規表示式
(1)正規表示式一般用來描述文字模式的特殊用法,由普通字元(例如字元a-z)以及特殊字元(稱為元字元,如/、*、?等)組成。
(2)基本元字符集及其含義
^ :只匹配行首。
如^a 匹配以a開頭的行abc,a2e,a12,aaa,......
$ :只匹配行尾。
如^a 匹配以a結尾的行bca,12a,aaa,.......
* :匹配0個或多個此單字元。 如(a)* 匹配 空,a,aa,aaa,....
:只匹配內字元。可以是乙個單字元,也可以是字串行,用","將裡面要匹配的不同字串分開。也可以使用-來表示內字串行的範圍,如[1-5]表示[12345]
\ :只用來遮蔽乙個元字元的特殊含義。 如\*,\',\",\|,\+,\^,\. 等
.:(點)只匹配任意單字元。
pattern\:只用來匹配前面pattern出現的次數.n為次數。如a\匹配aa.
pattern\:含義同上,但次數最少為n.如a\匹配aa,aaa,aaaa,.....
pattern\:含義同上,但次數在n和m之間。如a\匹配aa,aaa,aaaa三個
(3)舉例說明:
^$ :匹配空行
^.$ :匹配包含乙個字元的行
\*\.pas :匹配以*.pas結尾的所有字元或檔案
[0123456789]或[0-9] :假定要匹配任意乙個數字
[a-z] :任意小寫字母
[a-za-z] :任意大小寫字母
[s,s] :匹配大小寫s
[0-9]\\.[0-9]\\.[0-9]\\.[0-9]\ :匹配ip位址 [0-9]\三個0-9組成的字串;\. :匹配點(注意這裡點是特殊的字元,所以要用"\"來遮蔽其含義)
2.find介紹 (1)查詢具有某些特徵檔案的命令,可遍歷當前目錄甚至於整個檔案系統來檢視某些檔案或目錄,其遍歷大的檔案系統時一般放在後台執行。
(2)find命令的一般形式
find pathname -options [-print -exec -ok]
-pathname :find命令所查詢的目錄路徑。如用"."來表示當前的目錄,用/來表示系統根目錄
-print :find命令將匹配的檔案輸出到標準輸出
-exec: find命令對匹配的檔案執行該引數所給出的shell命令,相應的命令形式為
'command'{} \; (注意{}和\之間的空格)
-ok 和 -exec的作用相同,只不過以一種更為安全的模式來執行該引數所給出的shell命令,在執行每乙個命令之前,都會給出提示,讓使用者來確定是否執行。
options有如下幾種:
-name :按照檔名查詢檔案
-perm :按照檔案許可權來查詢檔案
-user :按照檔案屬主來查詢檔案
-group :按照檔案所屬的組來查詢檔案
-mtime -n +n 按照檔案的更改時間來查詢檔案,-n表示檔案更改時間距現在n天以內,+n表示檔案更改時間距現在n天以前。find命令還有-atime 和-ctime選項,但它們都和-mtime選項相似。
-size n[c]查詢檔案長度為n塊的檔案,帶有c時表示檔案長度以位元組計。
-nogroup 查詢無有效所屬組的檔案,即該檔案所屬的組在/etc/groups中不存在
-newer file1 !file2查詢更改時間比檔案file1新但比檔案file2舊的檔案
-depth 先查詢指定目錄有無匹配檔案,若無則再在子目錄中查詢
-type 查詢某一型別的檔案,如
b :塊裝置檔案
d:目錄
e:字元裝置檔案
p;管道檔案
f:普通檔案
(3)find命令舉例
find -name "*.txt" -print 查詢txt結尾的檔案並輸出到螢幕上
find /cmd ".sh" -print 查詢/cmd目錄下所有sh檔案,並輸出
find . -perm 755 -print 查詢當前目錄下許可權為755的檔案,並輸出
find `pwd` -user root -print 查詢當前目錄下屬主為root的檔案,並輸出
find ./ -group sunwill -print 查詢當前目錄下所屬主是sunwill的檔案
find /var -mtime -5 -print 查詢/var目錄下更改時間為5天內的所有檔案
find /var -mtime +5 -print 查詢/var目錄下更改時間為5天以前的所有檔案
find /var -newer "myfile1" ! -newer "myfile2" -print 查詢/var目錄下比myfile1新,但是比myfile2舊的所有檔案。
find /var -type d -print 查詢/var目錄下所有目錄
find /var -type l -print 查詢/var目錄下所有的符號鏈結檔案。
find . -size +1000000c -print 查詢當前目錄下大於1000000位元組的檔案
find / -name "con.file" -depth -print 查詢根目錄下有無"con.file",若無則在其子目錄中查詢
find . -type f -exec ls -l {} \; 查詢當前目錄下是否有普通檔案,若有則執行ls -l
(4)xargs命令
在 使用find命令的-exec選項處理匹配到的檔案時,find命令將所有匹配到的檔案一起傳遞給exec。不幸的是,有些系統對能夠傳遞給exec的命 令長度有限制,這樣find命令執行幾分鐘之後就算出現溢位錯誤。錯誤資訊通常是「引數列太長」或「引數列溢位」。這就是xargs的用處所在,特別是與 find命令一起使用,exec會發起多個程序,而xargs會多個,只有乙個
find ./ -perm -7 -print | xargs chmod o-w 查詢許可權為7的檔案並傳遞給chmod處理
3.grep介紹 (1)grep 的一般格式為 grep [options] 基本正規表示式 [檔案]
字串引數最好採用是雙引號括,一是以防被誤解為shell命令,二是可以用來查詢多個單詞組成的字串
-c:只輸出匹配行的記數
-i:不區分大小寫(只適用於單個字元)
-h:查詢多個檔案時不顯示檔名
-h:只顯示檔名
-l:查詢多檔案時只輸出包含匹配字元的檔名
-n:只顯示匹配行及其行號
-s:不顯示不存在或無匹配文字的錯誤資訊。
-v:顯示不包含匹配文字的所有行。
(2)舉例說明:
grep ^[^210] myfile 匹配myfile中以非2、1、0開頭的行
grep "[5-8][6-9][0-3]" myfile 匹配myfile中第一位為5|6|7|8,第二位6|7|8|9,第三位為0|1|2|3的三個字元的行
grep "4\" myfile 匹配myfile中含有44,444或4444的行
grep "\?" myfile匹配myfile中含有任意字元的行
(3)grep命令類名
[[:upper:]]
表示[a-z]
[[:alnum:]]
表示[0-9a-za-z]
[[:lower:]]
表示[a-z]
[[:space:]]
表示空格或者tab鍵
[[:digit:]]
表示[0-9]
[[:alpha:]]
表示[a-za-z]
如:grep "5[[:digit:]][[:digit:]]" myfile 匹配myfile中含有5開頭接下去兩位都是數字的行。
linux基礎命令之檔案查詢
1 指令碼檔名的查詢 which 尋找 執行檔案 命令格式 which a command 引數 a 將所有由path目錄中可以找到的命令均列出,而不只第乙個被找到的命令名稱 範例一 分別用root與一般賬號查詢ifconfig這個命令的完整檔名 root www which ifconfig sb...
linux基礎 查詢命令
find命令 一 原理 功能 在目錄結構中搜尋檔案,並執行指定的操作。此命令提供了相當多的查詢條件,功能很強大。語法 find 起始目錄 尋找條件 操作 該命令提供的尋找條件可以是乙個用邏輯運算子not and or組成的復合條件。邏輯運算子and or not的含義為 1 and 邏輯與,在命令中...
linux檔案查詢命令
linux 檔案查詢命令 1 which 可執行檔名 查詢可執行檔案命令 顯示乙個可執行檔案的完整路徑 按照alias path的順序查詢 例 which lmcbbat 2 whereis 可執行檔名 搜尋乙個可執行工具及其相關配置,幫助 例 whereis lmcbbat 3 slocate l...