命令1:Find是一個非常有效的工具,它可以遍歷當前目錄甚至於整個文件系統來查找某些文件或目錄.
主要選項:
-name :按照文件名查找文件
-iname “文件名”:查找時忽略文件大小寫
-perm :按照文件權限來查找文件
-prune :不在當前指定的目錄中查找
-user :按照文件屬主來查找文件
-group :按照文件所屬的組來查找文件
-uid UID
-gid GID
-inum n :根據節點號 n 查找
-samefile name 相同節點號的文件
-links n 連接數爲 n 的文件
-regex “PATHERN” :以pathern匹配的文件路徑字符串,而不僅僅是文件的名稱
-mtime -n +n: 按照文件的更改時間來查找文件,-n表示文件更改時間距現在n天 以內,+n表示文件更改時間距現在n天以前.
-nogroup 查找無有效所屬組的文件,即該文件所屬的組不存在
-nouser 查找無有效屬主的文件
-newer file1 ! file2 查找更改時間比文件file1新但比文件file2舊的文件
組合文件查找
與:-a 同時滿足
或:-o 滿足一個就行
非:-not,! 條件取反
-not A -a -not B = -not ( A -o B ) 不是A也不是B----------AB以外
-not A -o -not B = -not ( A -a B ) 不是A或不是B----------A且B以外
注:有些()需轉義
-type 查找某一類型的文件
[ 文件類型:
b 塊設備文件
d 目錄
c 字符設備文件
p 管道文件
l 符號鏈接文件
f 普通文件
s 套接字文件
]
-size n[c] 查找文件長度爲n塊的文件,帶有c時表示文件長度以字節計
例: 5k 表示 4k<n<=5k
-5k 表示 n<=4k
+5k 表示 n>5k
-atime # 訪問時間以天爲單位,#表數字
5 :5天前,6天之內
-5 :5天之內
+5 :6天之前
-mtime # 修改時間以天爲單位,#表數字
5 :5天前,6天之內
-5 :5天之內
+5 :6天之前
-ctime # 改變時間以天爲單位,#表數字
5 :5天前,6天之內
-5 :5天之內
+5 :6天之前
-amin 、-mmin 、-cmin 以分鐘爲單位
-depth 在查找文件時,首先查找當前目錄中的文件,然後再在其子目錄中查找
-mount 在查找文件時不跨越文件系統mount點
-follow 如果find命令遇到符號鏈接文件,就跟蹤到鏈接所指向的文件
-cpio 對匹配的文件使用cpio命令,就將這些文件備份到磁盤設備中
-perm +MODE
-MODE
MODE :與MODE精確匹配
#find ./ -prem 644 精確匹配644的文件
+MODE :匹配一類權限
#find ./ -prem +222 任何一類用戶的權限中有這一權限就匹配(寫權限)
#find ./ -prem +222 可以用 / 代替 +
#find ./ -prem +621 表示屬主有 讀或寫 ,或屬組有 寫,或者其他有執行權限都可以
-MODE :三類用戶都匹配
#find ./ -prem -222 表示每一類用戶的權限都小於等於2就匹配
#find ./ -prem -220 0表示不用匹配其他用戶的權限,而不是其他用戶沒有權限
處理動作
-print :默認處理動作,顯示,打印到屏幕
-ls :類似 ls -l
-delete :刪除查找到的文件
-fls /path/to/somfile :查找到的文件保存到指定文件中
-ok COMMAND {}\;對查找到的文件執行COMMAND指定的命令,交互式執行請求用戶確認,{}表示前面所查到的內用的引用。 \; 結束符
-exec COMMAND {}\; 不可交互
例:
#find / -path=/proc -a -prune -o -name "*.conf" -print 搜索根下除/proc目錄外的所有目錄
#find -name "*.conf" -exec cp {} {}.org \; 備份“*.conf”匹配到的文件加.org 擴展名
(其餘選項,請man find,進一步查看)
對find命令選項的一些例子:
# find /etc -type d #在/ e t c目錄下查找所有的目錄
# find /etc -user yaoyuan #在/etc目錄下查找文件屬主爲yaoyuan的文件
# find . -size +1000000c #在當前目錄下查找文件長度大於1 M字節的文件
# find / -name "*.txt" glob要用引號引起了
命令2:whereis命令會在指定的目錄中查找符合條件的文件,文件應的屬性應屬於原始代碼,二進制文件,或是幫助文件.
選項:
-b 只查找二進制文件
-B 只在設置的目錄下查找二進制文件
-f 不顯示文件名前的路徑名稱
-m 只查找說明文件
-M 只在設置的目錄下查找說明文件
-s 只查找原始代碼文件
-S 只在設置的目錄下查找原始代碼文件
-u 查找不包含指定類型的文件
whereis例子
$ whereis mysql
mysql: /usr/bin/mysql /etc/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz
命令3:locate命令用於查找符合條件的文件,它會去保存文件與目錄名稱的數據庫內,查找符合條件的文件或目錄
直接用locate加“關鍵字” :搜索名稱或路徑中帶有“關鍵字”的文件。
選項:
-u 建立數據庫,由根目錄開始
-U 建立數據庫,可以指定開始的位置
-e 將排除在尋找的範圍之外
-f 將特定的檔案系統排除在外
-q 安靜模式,不會顯示任何錯誤訊息
-n 至多顯示n個輸出
-r 使用正規運算式 做尋找的條件
-o 指定數據庫存的名稱
-d 指定數據庫的路徑
-h 顯示輔助訊息
-v 顯示更多的訊息
-V 顯示程序的版本訊息
(locate命令可以在搜尋數據庫時快速找到檔案,數據庫由updatedb程序來更新,updatedb是由cron daemon週期性建立的,locate命令在搜尋數據庫時比由整個由硬盤資料來搜尋資料來得快,但較差勁的是locate所找到的檔案若是最近才建立或剛更名的,可能會找不到,在內定值中,updatedb每天會跑一次,可以由修改crontab來更新設定值。(etc/crontab)
locate指定用在搜尋符合條件的檔案,它會去儲存檔案與目錄名稱的數據庫內,尋找合乎範本樣式條件的檔案或目錄錄,可以使用特殊字元(如"*"或"?"等)來指定範本樣式,如指定範本爲kcpa*ner, locate會找出所有起始字串爲kcpa且結尾爲ner的檔案或目錄,如名稱爲kcpartner若目錄錄名稱爲kcpa_ner則會列出該目錄下包括子目錄在內的所有檔案。 )
updatedb :更新數據庫。