通過如上基礎語法的學習,讀者對 shell 程式設計有了更近一步的理解,shell 程式設計不再是簡單命令的堆積,而是演變成了各種特殊的語句、各種語法、程式設計工具、各種命令的集合。
在 shell 程式設計工具中,四劍客工具的使用更加的廣泛,shell 程式設計四劍客包括:find、sed、grep、awk,熟練掌握四劍客會對 shell 程式設計能力極大的提公升。
四劍客之 find 工具實戰,find 工具主要用於作業系統檔案、目錄的查詢
find path -option [ -print ]
[ -exec -ok command
] \;
引數
注釋-name filename
#查詢名為 filename 的檔案;
-type b/d/c/p/l/f
#查是塊裝置、目錄、字元裝置、管道、符號鏈結、普通檔案;
-size n[c]
#查長度為 n 塊[或 n 位元組]的檔案;
-perm
#按執行許可權來查詢;
-user username
#按檔案屬主來查詢;
-group groupname
#按組來查詢;
-mtime -n +n
#按檔案更改時間來查詢檔案,-n 指 n 天以內,+n指 n 天以前;
-atime -n +n
#按檔案訪問時間來查詢檔案;
-ctime -n +n
#按檔案建立時間來查詢檔案;
-mmin -n +n
#按檔案更改時間來查詢檔案,-n 指 n 分鐘以內,+n 指 n 分鐘以前;
-amin -n +n
#按檔案訪問時間來查詢檔案;
-cmin -n +n
#按檔案建立時間來查詢檔案;
-nogroup
#查無有效屬組的檔案;
-nouser
#查無有效屬主的檔案;
-newer f1 !f2
#找檔案,-n 指 n 天以內,+n 指 n 天以前;
-depth
#使查詢在進入子目錄前先行查詢完本目錄;
-fstype
#查更改時間比 f1 新但比 f2 舊的檔案;
-mount
#查檔案時不跨越檔案系統 mount 點;
-follow
#如果遇到符號鏈結檔案,就跟蹤鏈結所指的檔案;
-cpio
#查位於某一型別檔案系統中的檔案;
-prune
#忽略某個目錄;
-maxdepth
#查詢目錄級別深度。
find /data/ -name "*.txt"
#查詢/data/目錄以.txt 結尾的檔案;
find /data/ -name "[a-z]*"
#查詢/data/目錄以大寫字母開頭的檔案;
find /data/ -name "test*"
#查詢/data/目錄以 test 開頭的檔案;
find /data/ -type d #查詢/data/目錄下的資料夾;
find /data/ ! -type d #查詢/data/目錄下的非資料夾;
find /data/ -type l #查詢/data/目錄下的鏈結檔案。
find /data/ -type d|
xargs
chmod 755 -r #查目錄型別並將許可權設定為 755;
find /data/ -type f|
xargs
chmod 644 -r #查檔案型別並將許可權設定為 644;
find /data/ -size +1m #查檔案大小大於 1mb 的檔案;
find /data/ -size 10m #查檔案大小為 10m 的檔案;
find /data/ -size -1m #查檔案大小小於 1mb 的檔案;
find /data/ -perm 755 #查詢/data/目錄許可權為755的檔案或者目錄;
find /data/ -perm -007 #與-perm 777 相同,表示所有許可權;
find /data/ -perm +644 #檔案許可權符號 644 以上;
atime,access time 檔案被讀取或者執行的時間;
ctime,change time 檔案狀態改變時間;
mtime,modify time 檔案內容被修改的時間;
find /data/ -mtime +30 -name "*.log"
#查詢 30 天以前的 log 檔案;
find /data/ -mtime -30 -name "*.txt"
#查詢 30 天以內的 log 檔案;
find /data/ -mtime 30 -name "*.txt"
#查詢第 30 天的 log 檔案;
find /data/ -mmin +30 -name "*.log"
#查詢 30 分鐘以前修改的 log 檔案;
find /data/ -amin -30 -name "*.txt"
#查詢 30 分鐘以內被訪問的 log 文
find /data/ -cmin 30 -name "*.txt"
#查詢第 30 分鐘改變的 log 檔案。
#查詢/data 目錄以.log 結尾,檔案大於 10k 的檔案,同時 cp 到/tmp 目錄;
find /data/ -name "*.log" –type f -size +10k -exec cp
/tmp/ \;
#查詢/data 目錄以.txt 結尾,檔案大於 10k 的檔案,許可權為 644 並刪除該檔案;
find /data/ -name "*.log" –type f -size +10k -m perm 644 -exec rm –rf \;
#查詢/data 目錄以.log 結尾,30 天以前的檔案,大小大於 10m 並移動到/tmp 目錄;
find /data/ -name "*.log" –type f -mtime +30 –size +10m -exec mv
/tmp/ \;
shell四劍客之find
find主要用來查詢檔案名,其基本格式 find path option print exec ok command 常用引數如下 name find name four 查詢名為four的檔案 包括目錄和檔案 find name fou 查詢開頭是fou的檔案 find name a z 查詢大寫...
Shell程式設計四劍客之AWK
awk是乙個優良的文字處理工具,linux 及unix 環境中現有的功能最強大的資料處理引擎之一,以aho weinberger kernighan三位發明者名字首字母命名為awk,awk是乙個行級文字高效處理工具,awk經過改進生成的新的版本有nawk gawk,一般linux預設為gawk,ga...
shell程式設計四劍客之SED
sed options commands filename sed工具預設處理文字,文字內容輸出螢幕已經修改,但是檔案內容其實沒有修改,需要加 i引數即對檔案徹底修改 x x為指定行號 x,y 指定從x到y的行號範圍 pattern 查詢包含模式的行 pattern pattern 查詢包含兩個模式...