Linux 基礎命令 檔案查詢

2021-07-24 08:05:11 字數 4101 閱讀 9855

查詢目錄下的所有檔案中是否含有某個字串 

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...