Linux中find命令細節詳解

2021-02-19 Linux公社

 提示:點擊上方"Linux公社"↑免費訂閱

find命令特點:文件查找,實時查找,速度略慢,精確匹配

使用格式:# find [options] [查找路徑] [查找條件] [處理動作]

查找路徑:默認為當前目錄

查找條件:默認為查找指定路徑下的所有文件

處理動作:默認為顯示

查找/tmp目錄下文件名為passwd的文件:# find /tmp -name "passwd"

查找/tmp目錄下文件名以passwd開頭的文件,passwd不區分大小寫:# find /tmp -iname "passwd*"

查找/tmp目錄下屬主為linuxmi的文件:# find /tmp -user linuxmi

查找/tmp目錄下屬組為linuxmi的文件:# find /tmp -group linuxmi

查找/tmp目錄下UID為502的文件:# find /tmp -uid 502

查找/tmp目錄下GID為502的文件:# find /tmp -gid 502

一個普通用戶例如linuxmi創建了/tmp/linuxmi.txt,該文件屬主和屬組都是linuxmi,但當keyso用戶被刪除之後,/tmp/linuxmi.txt文件的屬主和屬組會發生變化,此種情況無法再根據屬主為linuxmi這個被刪除用戶查找到/tmp/linuxmi.txt文件

查找/tmp目錄下沒有屬主的文件:# find /tmp -nouser

查找/tmp目錄下沒有屬組的文件:# find /tmp -nogroup

查找/tmp目錄下的目錄:# find /tmp -type d

-type文件類型包括:f(普通文件)、d(目錄)、b(塊設備)、c(字符設備)、l(符號連結文件)、p(命名管道)和s(套接字)等

-size:根據文件大小查找,-size [+ | -]#[k | M | G]+(大於),-(小於),沒有+-,就是精確匹配

#實際的取值範圍:(#-1<x<=#

格式:-[a | m | c][time | min] [+ | -]#

根據time時間戳查找(以天為單位):

-atime:訪問時間,就是一個文件最後一次被訪問的時間

-mtime:修改時間,就是文件的內容最後被修改的時間

-ctime:改變時間,就是文件或者目錄的屬性(屬主、屬組、權限等等)被改變的時間

根據min時間戳查找(以分鐘為單位):

-amin:意義同-atime

-mmin:意義同-mtime

-cmin:意義同-ctime

+#:表示(#+1)天之外被訪問過

-#:表示#天之內被訪問過

#:表示在#<=x<#+1)天的時間段內被訪問過

根據權限查找,格式:-perm [+ | -]MODE

+MODE:任何一類用戶的任何一位權限匹配,常用於查找某類用戶的某特定權限是否存在

-MODE:每類用戶的指定要檢查的權限位都要匹配

MODE:精確匹配所給的權限

示例:        //6=4+2=r+w

查找/tmp目錄下權限為666的文件(精確匹配):# find /tmp -perm 666

查找/tmp目錄下其他用戶有讀寫權限的文件:# find /tmp -perm -006

查找/tmp目錄下其他用戶有讀或者寫權限的文件:# find /tmp -perm +006

查找/tmp目錄下至少有一類用戶有寫權限的文件:# find /tmp -perm +222

查找/tmp目錄下所有用戶都有寫權限的文件:# find /tmp -perm -222

查找/tmp目錄下所有用戶都沒有寫權限的文件:# find /tmp -not -perm +222

       //「所有用戶都沒有」和「只要有一類用戶有」意思相反

       //只確定不能有寫權限,並不能確定有沒有讀和執行權限

       //「至少有一類用戶沒有」和「所有用戶都有」意思相反

查找/tmp目錄下屬組或者其他用戶有讀寫權限的文件:# find /tmp -perm -060 -o -perm -006

查找/tmp目錄下屬組和其他用戶都有讀寫權限的文件:# find /tmp -perm -066

查找/tmp目錄下屬組有讀或者寫權限,或者其他用戶有讀或者寫權限的文件(4選1):

# find /tmp -perm +066

查找/tmp目錄下的普通文件,並刪除:# find /tmp -type f -exec rm -rf {} \;

查找/tmp目錄下大於10M的文件,並以長格式顯示文件信息:# find /tmp -size +10M -ls

查找/tmp目錄下以.doc結尾的文件,並重命名為.docx:# find /tmp -iname "*.doc" -exec mv {} {}x \;

處理動作:

-ls:以長格式顯示文件信息

-exec COMMAND {} \; -->  對查找到的文件執行指定的命令,{}為佔位符,指代find查找到的文件

-ok COMMAND {} \; -->  -exec COMMAND {} \;類似,交互式的-exec

|xargs COMMAND:對查找到的文件執行指定的命令,功能與-exec COMMAND {} \;類似

備註:-execxargs的區別

-execfind將查找到的所有文件一次性全部傳遞給-exec所指定的命令,容易出現溢出錯誤。-exec為處理每一個匹配到的文件而發起一個相應的進程,會導致進程過多,系統性能下降

xargs:對find傳遞給xargs所指定的命令的文件,每次只獲取一部分而不是全部,不會出現溢出錯誤。另外xargs只會發起一個進程,不會導致系統性能下降

# find /tmp \( -nouser -o -nogroup \) -a -atime -30            //括號內側的兩端都需要加空格

組合條件:

-a:與,同時滿足,如果組合條件中只有-a,可以省略  -->  # find /tmp -user hadoop [-a] -name "*.txt"

-o:或,只需滿足其一即可,優先級比-a低,如果需要先執行-o條件,需要加(),()需要轉義

-not | !:非,取反

A且非B  <==>  非(AB      -not A -a -not B  <==> -not \( A -o B \)

A或非B  <==>  非(AB      -not A -o -not B  <==> -not \( A -a B \)

本文永久更新連結地址:https://www.linuxidc.com/Linux/2018-05/152609.htm

看完此文,別忘了豎起大拇指給我們個贊👍

相關焦點

  • Linux中find命令的使用詳解(上)
    find命令是各種Linux發現版中比較重要的、常用的一個命令,該命令功能強大,熟練掌握了這個命令的使用,對平時的系統運維、管理工作會起到事半功倍的效果。-H』表示除了處理命令行參數之外,不跟隨其他符號連結,也就是說只跟隨命令行中指定的符號連接,』-L』表示跟隨所有的符號連接,』-P』是默認的選項,表示從不跟隨符號連接。[-D debugoptions]主要用於列印診斷信息。能幫助我們診斷出find命令為何不執行我們想要其執行的任務。
  • 每天一個 Linux 命令(31): /etc/group文件詳解
    linux /etc/group文件是有關於系統管理員對用戶和用戶組管理的文件,linux用戶組的所有信息都存放在/etc/group文件中。具有某種共同特徵的用戶集合起來就是用戶組(Group)。用戶組(Group)配置文件主要有 /etc/group和/etc/gshadow,其中/etc/gshadow是/etc/group的加密信息文件。
  • Linux工作必備命令:find命令,搜索神器高級用法
    linux系統下一切都是文檔(廢話,windows也是),而且作為開發人員平時是不使用圖形界面的,那麼多的文檔不可能都記住放在哪裡,有時候我們印象中只是記下了文檔大概的名字或者文件格式,這時候我們就需要find命令根據我們僅存的記憶來搜索文檔了。
  • Linux內存、Swap、Cache、Buffer詳解(三)
    其實也可以手動回收,怎麼操作,往下看:我們看到drop_caches這個文件默認值為0,對它進行一些寫操作就可以達到想要的效果,沒錯,就是這麼神奇,linux的原則是一切皆文件嘛。slab 分配器是內核中管理內存的一種機制,其中很多緩存數據實現都是用的 pagecacheecho 3 > /proc/sys/vm/drop_caches:表示清除 pagecache 和 slab 分配器中的緩存對象接下來咱們測試一下:1、執行free  -mw 命令查看系統當前內容情況,mw這些參數的含義參見Linux內存、Swap、Cache
  • Linux常用命令詳解
    在linux要查找某個文件,但不知道放在哪裡了,可以使用下面的一些命令來搜索:which     查看可執行文件的位置。find        實際搜尋硬碟查詢文件名稱。which是在PATH就是指定的路徑中,搜索某個系統命令的位置,並返回第一個搜索結果。使用which命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令。常用參數:-n  指定文件名長度,指定的長度必須大於或等於所有文件中最長的文件名。
  • Linux常用命令 - sed
    使用 sed 搜索和替換文本的一般形式如下:sed -i 's/SEARCH_REGEX/REPLACEMENT/g' INPUTFILE-i 將其輸出寫入標準輸出seds 替代命令,可能是 sed 中使用最多的命令-/分隔符字符。
  • 每天學一個 Linux 命令(20):find
    命令簡介find 命令在文件系統中搜索文件和目錄。find 命令用來在指定目錄下查找文件,在參數之前的任何字符串都會當作是目錄名。使用 find 命令時,如何不設置任何參數,則 find 命令將在當前目錄下查找子目錄與文件,並且將查找到的子目錄和文件全部顯示出來。
  • 【玩轉Linux命令】Linux中find常見用法
    Linux中find常見用法示例find  path   -option   [  -print ]   [ -exec   -ok  command ]   {} \;find命令的參數; pathname: find命令所查找的目錄路徑。
  • linux作業系統常用命令及常用問題
    一、linux作業系統常用命令>linux作業系統詳解(linux不再難懂)●man :任何時候你覺得對一個命令行不是很確定,都可以通過輸入「man + 命令」了解這個命令能確切是做什麼的。
  • Linux 三劍客 Awk、Sed、Grep 命令詳解
    Linux三劍客Awk命令詳解命令名稱Awk  pattern scanning and processing language命令作用對文本和數據進行處理數據可以來自標準輸(stdin)、一個或多個文件,或其它命令的輸出。它在命令行中使用,但更多是作為腳本來使用。awk有很多內建的功能,比如數組、函數等,這是它和C語言的相同之處,靈活性是awk最大的優勢。
  • linux常用命令—find
    Linux的find 命令有非常大的靈活性,可以向其指定豐富的搜索條件(如文件權限、屬主、屬組、文件類型、日期和大小等)來定位系統中的文件和目錄。此外,find 還支持對搜索到的結果進行多種類型的命令操作。
  • Linux命令之文件搜索
    前言在linux最小安裝模式下,當我們登錄到一臺不是自己安裝的linux伺服器上時,有的時候我們需要知道某個軟體的安裝位置,例如:我們需要知道mysql安裝在哪個目錄下,那麼我們應該怎麼辦呢?這就用到了文件的搜索功能。
  • linux刪除命令rm的使用
    在linux中創建文件很容易,系統中隨時會有文件變得過時且毫無用處。用戶可以用rm命令將其刪除。該命令的功能為刪除一個目錄中的一個或多個文件或目錄,它也可以將某個目錄及其下的所有文件及子目錄均刪除。對於連結文件,只是刪除了連結,原有文件均保持不變。
  • 教你Linux find命令實例教程:15個find命令用法
    一旦您知道如何在Linux中使用find命令,每個文件都只需敲擊幾下。$ find /path/to/search -size +100M -size -1G如果您有需要搜索的文件列表(例如,在.txt文件中),則可以使用find和grep命令的組合來搜索文件列表。
  • 【Linux】Linux系統中的權限詳解
    所以對於了解linux系統中的各種權限及要給用戶,服務等分配合理的權限十分重要。一.文件基本權限   首先看下linux下的文件權限,可以使用ll命令或者是帶-l(長列表選項)的ls命令。     linux中chmod命令就可以用來變更文件或目錄的權限。   語法:  chmod (選項) 模式  文件名   用法如下:       先創建一個文件a.txt,此時a.txt文件擁有者是沒有執行權限,我們可以給它加上執行權限(x),u就是代表文件擁有者。
  • linux命令大全
    Linux命令中涉及文件管理的命令(49條)有:cat、chattr、chgrp、chmod、chown、cksum、cmp、diff、diffstat、file、find、git、gitview、indent、cut、ln
  • Linux之find命令參數總結
    Liunx find系列Linux之find命令Liunx之find常用命令匯總Linux之find execLinux之find所以這個'-'的作用歸結起來就是匹配比mode權限更充足的文件(找不到什麼詞語來形容了)忽略某個目錄如果在查找文件時希望忽略某個目錄,因為你知道那個目錄中沒有你所要查找的文件,那麼可以使用-prune選項來指出需要忽略的目錄。在使用-prune選項時要當心,因為如果你同時使用了-depth選項,那麼-prune選項就會被find命令忽略。如果希望在當前目錄下查找文件,但不希望在.
  • Linux掛載命令mount用法及參數詳解
    將光碟放入光碟機,執行下面的命令。,執行下面的命令。#mount -t ntfs -o iocharset=cp936 /dev/sdc1 /mnt/usbhd1 #mount -t vfat -o iocharset=cp936 /dev/sdc5 /mnt/usbhd2linux系統下使用fdisk分區命令和mkfs文件系統創建命令可以將移動硬碟的分區製作成linux系統所特有的ext2、ext3
  • Linux系統find查找命令運用
    前兩天找raksmart機房要了一臺測試機,測試一些東西,然後呢,就想著謝謝find查找命令,find查找命令是我最喜歡的查找命令了,很簡單,而且很精確,下面就詳細的給大家介紹一下:使用格式:# find [options] [查找路徑] [查找條件] [處理動作]查找路徑:默認為當前目錄
  • linux中的vim命令
    如何查看命令的幫助文檔,三種方式:內置命令:help ls外部命令:ls --help,簡單的幫助文檔手冊man ls, 通過使用man查看詳細的幫助內容vim和vi命令本質上就是一個命令,這個命令是在linux命令中專門用來編輯文本文件的