shell腳本之find


實時查找工具,通過遍歷指定路徑下的文件系統完成文件查找;
工作特點:
  查找速度略慢;
  精確查找;
  實時查找;
語法:find [options]...[查找條件][處理動作]
查找路徑:指定具體的目標路徑,默認為當前目錄;
查找條件:指定的查找標准,可以是文件名、大小、類型、權限等,默認為找出指定路徑下的所有文件;
根據文件名查找:
  -name "文件名稱":支持通配符查找;
  -iname "文件名稱":不區分文件大小寫;
  -regex "PATTERN":以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱;
根據屬主、屬組查找:
  -user USERNAME:查找屬主為指定用戶的文件;
  -group GROUPNAME:查找屬組為指定用戶的文件;
  -uid USERID:查找屬主為指定uid號的文件;
  -gid GroupID:查找屬組為指定的GID號的文件;
  -nouser:查找沒有屬主的文件;
  -nogroup:查找沒有屬組的文件;
根據文件類型查找:
  -type TYPE
    f:普通文件;
    d:目錄文件;
    l:符號鏈接文件;
    s:套接字文件;
    b:塊設備文件;
    c:字符設備文件;
    p:管道文件;
組合條件:
  與:-a
  或:-o
  非:-not,!
    !A -a !B = !(A -o B)
    !A -o !B = !(A -a B)
例如:找出/tmp目錄下,屬主不是root,且文件名不是fstab的文件;
# find /tmp \( -not -user root -a -not -name 'fstab' \) -ls
# find /tmp -not \(-user root -o -name 'fstab'\) -ls
根據文件大小進行查找:
  -size [+|-]num單位
  常用單位有:k、M、G
    num單位:顯示的是大於num-1,小於等於num,這個區間內的值;
    -num單位:顯示的是大於等於0,小於等於num-1區間內的值;
    +num單位:大於num至無窮大區間內的所有值;
根據時間戳:
  以“天”為單位:
    -atime[+|-]num:訪問時間
    num:[num,num+1)
    +num:[num+1,∞]
    -num:[0,num)
    -mtime:修改時間
    -ctime:改變時間
  以“分鍾”為單位:
    -amin
    -mmin
    -cmin
根據權限查找:
  -perm [+|-]MODE
  MODE:精確權限匹配;
    +或/MODE:任何一類(u,個,o)對戲iangd權限中只要有一位匹配即可;
    -MODE:每一類對象都必須同時擁有為其指定的權限標准;
處理動作:對符合條件的文件做什么操作,默認輸出至屏幕;
  -print:默認處理動作,顯示至屏幕;
  -ls:類似於對查找到的文件執行“ls -l”命令;
  -delete:刪除查找到的文件;
  -fls /PATH/TO/SOMEFILE:查找到的所有文件的長格式信息保存至指定文件中;
  -ok COMMAND {} \;:對查找到的每個文件執行由COMMAND指定的命令;
    對於每個命令執行之前,都會交互式要求用戶確認;
  -exec COMMAND {} \;:對查找到的每個文件執行由COMMAND指定的命令
    {}:用於引用查找到的文件自身,如果查到多個文件,需要對每個文件都執行COMMAND命令,則需要在COMMAND后加上和查找到文件數量相同的{};
注意:find傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性傳遞給后面的命令。有些命令不能一次性接受過多參數,此時命令可能執行失敗,另一種方式可規避此問題;
find | xargs COMMAND


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM