文件查找命令

  • 圖片1
  • 文件查找
    • locate:非實時(并不能反應當前硬盤上是否有該文件,只是從數據庫中提取信息)模糊查找,查找是根據全系統文件數據庫進行的 ?–用的不多
      • # updatedb ?手動生成文件數據庫
      • 格式:locate KEYWORD
        • -i 不區分大小寫的搜索
        • -n #只列舉前#個匹配項目
      • locate conf:搜索名稱或路徑中包含“conf”的文件
      • locate -r ‘\.conf$’:?使用正則表達式來搜索以“.conf”結尾的文件,因為.在正則中有特有的含義所以需要轉義
    • find:實時精確查找(直接在硬盤上找),只搜索用戶具備讀取和執行權限的目錄
      • 格式:find ?查找路徑 ?查找標準 ?查找到以后的處理動作
        • 查找路徑:默認為當前目錄
        • 查找標準:默認為指定路徑下的所有文件
        • 處理動作:默認為輸出到標準輸出
      • 根據文件名和inode查找
        • -name:文件名區分大小寫,支持使用通配符,*, ?, [], [^]
        • -inum #:按inode號查找
        • -iname:文件名匹配時不區分大小寫(支持glob風格的通配符*,?,[],[^])
        • -links#?:鏈接數為#的文件
        • -regex PATTERN:基于正則表達式進行文件名匹配(用的不多)
          • find /etc -name init
      • 根據文件從屬關系查找
        • -user:查找屬于該用戶的文件
          • # find /home -user shenchao
        • -nouser:查找沒有屬主的文件
        • -group 根據組來查找
        • -nogroup:查找沒有屬組的文件
        • -uid UID:根據UID查找
        • -gid GID:根據GID查找
      • -type根據文件類型查找 :f文件 d目錄 l軟連接文件
        • # find /tmp -type f
      • -size:根據文件大小查找,在根目錄下查找大于100MB的文件:
        • find / -size +204800(204800表示多少個數據塊,在linux里一個數據塊=512字節=0.5K,100MB=102400K=204800個數據塊)
        • 也可以指定單位:find / -size +100M
          • +n 大于(#,oo)-n小于[0,#-1]?n等于(#-1,#]
      • 根據時間戳查找:
        • 天數:
          • -atime[+|-]#:訪問時間,查找過去三天訪問過的文件:大于等于3小于4天
            • 圖片1
          • -ctime:修改時間(文件屬性)
          • -mtime:改變時間(文件內容)
        • 分鐘:-amin , -mmin , -cmin
          • 在/etc下查找5分鐘內被修改過屬性的文件和目錄(-5負號表示5分鐘之內):# find /etc -cmin -5
      • -perm :根據權限來查找,1=x ?2=w ?3=wx ?4=r ?5=rx ?6=rw ?7=rwx
        • MODE:精確匹配每一位都必須相等
        • /MODE:至少有一類用戶匹配上MODE權限即滿足條件,0表示該位置權限不關心,即0位置上的那個用戶擁有任意權限都可以
          • find ./ -perm /333 -ls ?:表示查找或u或g或o,他們至少有一個擁有w或者x權限
        • -MODE:每一類用戶都必須擁有指定的MODE權限才符合條件,0表示該位置權限不關心
          • find ./ -perm -333 -ls ?:表示查找u且g且o,都同時擁有wx權限的文件
          • 其他人需要有w權限x權限,其他人需要有w權限x權限:
            • 圖片1
      • 條件組合:-a與(默認組合邏輯),-o或,-not,!非,
        • ?在etc下查找大于80mb小于100mb的文件
          • find /etc -size +163840 -a -size -204800
        • ?注意區分以下情況:
          • 第一組:
            • find ./ -not -user user1 -a -not -user user2
            • find ./-not \( -user user1 -o -user user2 \)
          • 第二組:
            • find ./ -not -user user1 -o -not -type d
            • find ./ -not \( -user user1 -a -type d \)
      • find的動作
        • -print:顯示(默認的動作)
        • -ls:類似ls -l的形式顯示每一個文件的屬性
          • find /etc -name *.conf -o -type f -ls ?注意:這個會將-name *.conf和-type f -ls取或,而不是-name *.conf和-type f
        • -delete:刪除查找到的文件
        • -ok COMMAND {} \; 對查找到的每個文件執行由COMMAND表示的命令,{}表示引用找到的每一個文件的文件名
        • -exec COMMAND {} \; 同上,每一個操作都不需要確認,{} \;為固定格式
          • find ./ -perm -007 -exec chmod o-w {} \;
          • find ./ -perm -020 -exec mv {} {}.new \;
          • find /etc -size +1M -exec echo {} >> /tmp/etc.largefiles \;
          • find /etc -size +1M | xargsecho {} >> /tmp/etc.largefiles
      • 注意:find傳遞查找到的文件路徑到后面的命令時,是先查找出所有符合條件的文件路徑,并一次性傳遞給后面的命令,但是有些命令不能接收過長的參數,此時命令執行會失敗,這種方式可以規避:find | xargs COMMAND,xargs傳參數的時候是一個個的傳給COMMAND處理,所以避免了參數過長導致的錯誤。xargs可以讀入stdin的數據并以空格符或回車符將stdin的數據分隔成為arguments,由于有些命令不支持標準輸入,如rm,ls,所以ls | rm 不會將參數傳遞給rm,需要 ls | xargs rm,find /etc -size +1M | xargs ls -l

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/102485

(0)
DPingDPing
上一篇 2018-07-08 23:24
下一篇 2018-07-09 11:12

相關推薦

  • linux操作系統啟動流程 & grub簡述

    linux操作系統啟動流程 & grub簡述

    Linux筆記 2018-06-03
  • nmcli命令

    可以用命令行工具 nmcli 來控制 NetworkManager。 在CentOS / RHEL 7中網絡管理命令行工具,也叫nmcli。經常使用ifconfig的用戶應該在CentOS 7中避免使用ifconfig了。nmcli的功能要強大、復雜的多。 地址配置工具:nmcli nmcli – command-line tool for controll…

    Linux筆記 2018-05-05
  • sudo相關配置詳解及aide高級入侵檢測環境

    sudo su – xiao -c ‘echo $USER’ 切換xiao用戶執行指令顯示用戶名xiao 通用的配置文件:/etc/sudoers 實際運用的配置文件:/etc/sudoers.d/ 里面文件權限應設為440;根據需要可以一個用戶設置一個配置文件便于管理 visudo 默認打開的是/etc/sudoers文…

    Linux筆記 2018-06-03
  • Linux文件管理及bash基礎特性

      1、Linux系統文件管理類命令及其常用方法、相關示例演示。 Linux系統文件管理類命令主要有cp、mv、rm ①???? cp命令:copy cp命令用于復制文件或目錄,分單源、多源復制兩種情況。 單源復制: 命令格式:cp [OPTION]… [-T] SOURCE DEST 如果DEST不存在,則先創建此文件,并復制源文件的…

    2018-07-01
  • 第三周筆記總結

    第七天運行腳本的條件:1、加執行權限或者bash+腳本名2、寫路徑(絕對、相對均可) 加執行權限以后,如果沒有放在PATH變量下的路徑內,運行腳本需要寫路徑3、如果不想寫路徑,可以將腳本放在PATH變量中的任何位置均可,通常放/root/bin下,/bin需要增加創建 腳本調試只檢測腳本中的語法錯誤bash -n /path/to/some_script跟蹤…

    Linux筆記 2018-04-15
  • 筆記

    LINUX中查看路由表的命令 route -nIP地址 有類的 無類的無類:網絡ID ,主機ID不確定 (32位以內的)CIDR 無類域間路由無類ID要與netmask(子網掩碼)一起用 用子網掩碼(也是32位的2進制數)來確定無類ID的網絡ID和主ID netmask對應的是1IP/網絡ID位數255.255.0.000000000 010000000 1…

    Linux筆記 2018-05-01
欧美性久久久久