Shell 程式設計四劍客之 Find

2021-10-07 21:38:53 字數 3146 閱讀 2736

通過如上基礎語法的學習,讀者對 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 查詢包含兩個模式...