本文參考:
一直知道find命令的查詢功能很強大,但從來沒有進行系統性的學習,今天有時間正好學習一下!
find命令的基本組成:find [paths] [expression] [actions]
-name 要查詢的檔名
示例:find /home/sifang/bin -name startcsgc
在/home/sifang/bin目錄下查詢名稱為startcsgc的檔案,如果忽略名稱中的大小寫,則使用-iname選項
-type 指定查詢的檔案型別
示例:find /home/sifang/bin -type f -name startcsgc
在/home/sifang/bin目錄下查詢名稱為startcsgc的檔案
find /home/sifang -type d -name bin
在/home/sifang目錄下查詢名稱為bin的資料夾
-size n 指定檔案大小,數字前+表示大於,-表示小於,常用單位c(位元組),k(kb),m(mb)
示例:find /home/sifang/bin -size +1m -type f | wc -l
查詢大小大於1m的檔案並統計個數
find /home/sifang/bin -size -10m -type f |wc -l
查詢大小小於10m的檔案並統計個數
find /home/sifang/bin -size +1m -and -size -10m -type f | wc -l
查詢大小在[1m ,10m ]區間內的檔案並統計個數。
-atime n 最近訪問過(accessed)的檔案,單位為天
-amin n 最近訪問過的檔案,單位為分鐘(minute)
-ctime n / -cmin n 最近狀態改變過(changed)的檔案
-mtime n / -mmin n 最近內容修改過(modified)的檔案
-newer file ! otherfile 查詢更新時間比file新的檔案,加上!表示查詢比otherfile舊的檔案
示例:find /home/sifang/bin -amin +10 -type f
十分鐘前訪問過的檔案
find /home/sifang/bin -amin -10 -type f
最近十分鐘內訪問的檔案
find /home/sifang/bin -amin +10 -and -amin -20 -type f
,以當前時間為基準,在20分鐘以內10分鐘之前時間段訪問過的檔案
find /home/sifang/bin -newer a ! b
查詢修改時間比a新但比b舊的檔案
補充linux系統中檔案的三個時間,access time訪問時間、modify time 修改時間、change time 狀態變化時間,對於新建的檔案,三個時間是相同的,可以通過stat 和ls命令檢視。
stat filename,三個時間都顯示
ls -lc filename 顯示檔案的change time
ls -lu filename 顯示檔案的access time
ls -l filename 顯示檔案的modify time
-perm ddd 使用者許可權permission,通常用三位數字表示許可權如644,ddd前+表示至少有一種指定的許可權,-表示必須包括指定的所有許可權
示例:find ./ -perm 777 -type f -exec ls -l {}; 查詢許可權為777的檔案
-user / -group 按檔案屬主、屬組來查詢檔案
-nouser / -nogroup 查詢沒有有效屬主/ 屬組的檔案,即該檔案的屬主在/etc/passwd檔案中不存在-path 給出檔案路徑。可在路徑中查詢,可以用於指定查詢路徑的子路徑,結合-prune指出要忽略的子目錄
-depth 先匹配所有的檔案,再在子目錄查詢
-maxdepth n,設定遞迴搜尋的目錄層級,1為當前目錄,表示不遞迴搜尋。
-prune指要忽略的目錄,結合-path選項使用,忽略-path指定的目錄。
示例:find ./ -prune
列印到標準輸出
-print,預設值
刪除-delete
自定義命令
-exec command
command以;為結束標誌,其中\是為了避免各個系統中;的不同意義,{}代表前面find查詢出來的檔名。
示例:find ./ -name aa -type f -exec ls -l {} \\;
在當前目錄查詢aa檔案,並顯示其詳細資訊。
find ./ -type f -mtime +14 -exec rm {} \\;
在當前目錄查詢14天之前修改的檔案,並刪除它們。
find每找到乙個符合查詢條件的檔案都會執行後面的命令一次,如果想等查詢到結束後再執行命令,則在命令最後新增+
現在假設需要將使用者主目錄下所有的 *** 檔案新增到壓縮包 music.tar.gz 中,直觀的感覺是,其命令應為如下形式:
find ~ -type f -name '*.***' -exec tar -czvf music.tar.gz {} ';'
實際情況是,這樣得到的 music.tar.gz 其實只包含乙個 *** 檔案。原因是 find 命令每次發現乙個音訊檔案,都會再執行一次 -exec 選項後面的壓縮命令。導致先前生成的壓縮包被覆蓋。
可以先讓 find 命令檢索出所有符合條件的音訊檔案,再將得到的檔案列表傳遞給後面的壓縮命令。完整的命令如下:
find ~ -type f -name '*.***' -exec tar -czvf music.tar.gz {} +
-ok command,功能同-exec,區別在於ok選項在執行命令時有互動式提示,提示你是否執行,是一種相對安全的做法。
示例:find ./ -name aa -type f -ok ls -l {} \;
find 使用指南
find 使用方法整理 name 按照檔名查詢檔案。perm 按照檔案許可權來查詢檔案。user 按照檔案屬主來查詢檔案。group 按照檔案所屬的組來查詢檔案。n表示檔案更改時間距現在n天以內,n表示檔案更改時間距現在n天以前.type 查詢某一型別的檔案,諸如 b 塊裝置檔案。d 目錄。c 字元...
Linux Sed命令使用指南
一次從輸入讀取一行資料,根據所提供的編輯器命令匹配資料,按照命令修改流中的資料,將新的資料輸出到stdout。sed命令的格式 sed options script file 讓替換命令能夠替換一行中不同地方出現的文字,格式 s pattern replacement flags。有4種可用的替換標...
Hadoop命令手冊使用指南
hadoop命令手冊 所有的hadoop命令均由bin hadoop指令碼引發。不指定引數執行hadoop指令碼會列印所有命令的描述。用法 hadoop configconfdir command generic options command options hadoop有乙個選項解析框架用於解析...