在文件系統上查找符合的文件
locate, find
locate:
依賴于事先構建好的索引庫:
系統自動實現:(周期性任務)
手動更新數據庫(updatedb);
工作特性:
查找速度快;
模糊查找;
非實時查找:
locate: [OPTION] ….PATTERN…
-b:只匹配路徑中的基名;
-c:統計出共有多少個符號條件的文件
-r:BRE
find:
實時查找工具,通過遍歷指定起始路徑下文件系統層級結構完成文件查找
工作特性:
查找速度略慢;
精確查找:
實例查找;
實時查找;
用法:
find[OPTION].[查找起始路徑] [條件查找] [處理動作]
查找起始路徑:指定具體搜索目標起始路徑;默認當前目錄;
查找條件:指定查找標準,可以根據文件名,大小,類型,從屬關系,權限等等標準進行,默認找出指定路徑下的所有文件;
處理動作:對符合查找條件的文件做出的操作,例如刪除等動作,默認為輸出值標準輸出;
-表達式:選項和測試
測試:結果通常為布爾型(”true""false")
根據文件名查找
-name "pattern"
-name" pattern"
支持glob風格的通配符
-regex pattern:基于正則表達式模式查找文件,匹配是個路徑,而非其名:
根據文件從屬關系查找:
-user USERNAME
-group GRPNAME: 查找屬組指定組的所有文件;
-uid UID:查找屬主指定UID的所有文件;
-nouser:查找沒有屬主的文件;
-nogroup :查找沒有屬組的文件;
根據文件的類型查找:
-type TYPE:
f:普通文件
d:目錄文件
l:符號鏈接文件
b:塊設備文件
c:字符設備文件
t:管道文件
s :套接字符
組合測試:
與:-a, 默認組合邏輯;
或:-o:
非:-not, !
練習:
1、找出/tmp目錄下屬主為非root的所有文件;
2、找出/tmp目錄下文件名中不包含fstab字符串的文件;
3、找出/tmp目錄下屬主為非root,而且文件名字不包含fstab字符串的文件;
!A -a !B=!(A -o B)
!A -o !B=!(A -a B)
根據文件大小查找:
-size [+|-]#UNIT
常用單位:K,M,G
#UNIT: (#-1,#)
-#UNIT:
+#UNIT:(# ,00)
根據時間戳查找:
以天為單位:
-atime[+|-]# 訪問時間
#:過去第幾天訪問的文件(#,#-1]
-#:(0,#]
+#:(00,#-1]
-mtime 修改時間
-ctime 改變時間
以分鐘為單位:
-amin
-mmin
-cmmin
根據權限查找
-perm [/|-]mode
mode:精確權限匹配
/mode:任何一類用戶(u,g,o)的權限中的任何一位(r,w,x)符合條件滿足
9位之間存在“或”關系
-mode: 每一類(u,g.o)的權限中的每一位(r,w,x)同時符合條件即滿足; 9為權限之間存在“與”關系
處理動作:
-print: 輸出至標準輸出;默認的動作;
-ls; 類似于對查找到的文件執行“ls-l",輸出文件的纖細信息;
-delete:刪除查找到的文件;
-fls /PATH/TO/SOMEFILE:把查找到的所有文件的長格式信息保存至指定的文件中:
-ok COMMAND {}\; :對查找的每個文件執行有COMMAND表示的命令
-exec COMMAND {} \;對查找的每個文件執行有COMMAND表示的命令;
注意:find傳遞查找到的文件路徑至后面的命令時,是先查找出所有符合條件的文件路徑,并以次性傳遞給后面的命令;但是有些命令不能接受過長參數,此時命令執行會失??;另外一種發那個是可規避此問題;
課外作業:學習xargs 命令的學法;
練習:
1、查找/var目錄下屬主為root,且屬組為mail的所有文件或目錄;
~]# find /var -user root -a -group mall -ls
2、查找/usr目錄下不屬于root,bin 或hadoop的所有文件或目錄;用兩種方法;
~]# find /usr -not -user root -a not -user bin -a -not -user hadoop
~]# find /usr -not \( -user root -o -user bin -o -user hadoop \) -ls
3、查找當前/etc目錄下最近一周內其內容修改過,卻屬主不是root用戶也不是hadoop用戶的文件或目錄;
~]# find /etc -mtime -7 -a -not \(-user root -o -user hadoop \) -ls
~]# find /etc -mtime -7 -a -not -user root -a -not -user hadoop -ls
4、查找當前系統上沒有屬主或屬組,且一周內曾被訪問過的文件或目錄;
~]# find / \( -nouser -o -nogroup \) -atime -7 -ls
5查找/etc目錄下大于1M且類型為普通文件的所有文件;
~]# find /etc -seze +1M -type f -exec ls -lh {} \;
6、查找/etc目錄下所有用戶都沒有寫權限的文件;
~]# find /etc -not -perm -222 -ls
~]# find /etc -perm /222 -ls文件查找
7、查找/etc目錄至少有一類用戶沒有執行權限的文件;
~]# find /etc -not -perm -111 -type f -ls
8、查找/etc/init.d/目錄下,所有用戶都有執行權限,卻其他用戶有寫權限的所有文件;
~]# find /etc -perm -113 -type f -ls
原創文章,作者:shadow,如若轉載,請注明出處:http://www.www58058.com/58108
內容總結的詳細~~排版上能注意下會更好~加油~