檔案查詢命令

bug--maker發表於2018-09-18
  • locate:不是實時的檔案查詢,根據全系統檔案資料庫進行查詢的,模糊查詢,但是速度較快 update 命令用來生成檔案資料庫;locate reads one or more databases prepared by updatedb(8) and writes file names matching atleast one of the PATTERNs to standard output, one per line
    這裡寫圖片描述
  • 最常使用的命令是find,實時查詢,精確查詢,通過遍歷目錄中的所有檔案的查詢,但是速度慢;
  • 格式:find 查詢路徑 查詢標準 查詢以後的處理操作,預設為當前目錄進行查詢;
  • 查詢標準:
    • -name filename:用來做精確查詢;支援檔名通配:
      • *:任意長度任意字元;
      • ?:任意單個字元;
    • -iname filename:表明在匹配不區分大小寫;
    • -regex PATTERN:基於正規表示式實現檔名匹配;
    • -user USERNAME:進行使用者查詢;
    • -group GROUPNAME:按照組進行查詢;
    • -uid uidname:按照 uid進行查詢,因為一個使用者刪除之後,不在使用者家目錄裡面的檔案仍然是存在的,並且屬主為之前使用者的uid,對於這些檔案的管理需要使用uid進行查詢;
    • -gid gidname:按照 gid進行查詢,對於組的概念和上面是一樣的;
    • -nouser:查詢沒有使用者的檔案;
    • -nogroup:查詢沒有屬組的檔案;注意:使用者或者組再被使用-r刪除後,使用者或者租
      id 號仍然存在,這個使用者的檔案任然是存在的;
    • -type通過型別進行查詢:
      • f:普通檔案;
      • d:目錄檔案;
      • c:字元裝置;
      • b:塊裝置;
      • l:連結檔案;
      • p:管道裝置;
      • s:套接字檔案;
    • -size:#單位 k|M|G:同樣可以使用+-號表示大於或者小於該大小,在一定範圍內的都會顯示;
    • 組合條件進行查詢:
      • -a:表示需要同時滿足;
      • -o:表示兩種中間滿足一個;
      • -not:表示非;
        • 例如:find /tmp –type – not –d –a –not –f:表示查詢不是目錄並且不是套接字的檔案;
        • find ./ -not –user user1 –o –not –type d 等價於 find ./ -not \( -user user1 –a –type d \);
    • 根據時間戳進行查詢:
      • -mtime :表示修改時間;
      • -ctime:表示檔案的修改時間;
      • -atime:表示檔案的訪問時間;
      • 支援使用+|-進行修飾,上面表示的時間單位是天,如果不使用表示精確到某一個時刻;-:表示多久時間之內訪問的檔案;+:表示多久時間之前訪問的檔案;5:表示5天之前訪問的檔案;-5:表示五天之內訪問的檔案;+5:表示五天之前訪問的檔案;
      • 同樣也支援精確到分鐘的操作:
        • -mmin:表示修改時間;
        • -amin:表示訪問時間;
        • -cmin:表示改變時間;
    • 按照許可權進行查詢:
      • -perm MODE:表示精確匹配,;
        • \MODE:表示只要有一個許可權匹配到就可以;
        • -perm –mode :當檔案許可權完全包含mode時,才可以進行匹配;
        • find ./ perm -001
  • find執行的動作:
    • -print:顯示;
    • -ls:類似 ls –l 的形式顯示每一個檔案的詳細資訊;
    • -ok command {} \;:使用\;結尾,否則就是語法錯誤,作為檔名稱佔位符號;find ./ -perm -mode 001 -ok chmod o-x {} \;這種方式是需要確認的
    • -exec command {} \;: 這裡是不會存在提示資訊的;
    • find /etc –size +1M –exec echo {} >> /tmp/etc.largefiles \; 作用等價於 find /etc –size +1M | xargs echo >> /tmp/etc.largefiles;

相關文章