linux文件查找命令

which 查看可執行文件的位置


  • 命令格式:
    which 可執行文件名稱
  • 命令功能:
    which指令會在PATH變量指定的路徑中,搜索某個系統命令的位置,并且返回第一個搜索結果。
  • 命令參數:
    -n  指定文件名長度,指定的長度必須大于或等于所有文件中最長的文件名。
    -p  與-n參數相同,但此處的包括了文件的路徑。
    -w  指定輸出時欄位的寬度。
    -V  顯示版本信息
  • 使用實例:
    查找文件、顯示命令路徑:
    which lsmod
    用 which 去找出 which:
    which which

whereis 定位可執行文件


  • 命令格式:
    whereis [-bmsu] [BMS 目錄名 -f ] 文件名
  • 命令功能:
    whereis命令是定位可執行文件、源代碼文件、幫助文件在文件系統中的位置。這些文件的屬性應屬于原始代碼,二進制文件,或是幫助文件。whereis 程序還具有搜索源代碼、指定備用搜索路徑和搜索不尋常項的能力。
  • 命令參數:
    -b 定位可執行文件。
    -m 定位幫助文件。
    -s 定位源代碼文件。
    -u 搜索默認路徑下除可執行文件、源代碼文件、幫助文件以外的其它文件。
    -B 指定搜索可執行文件的路徑。
    -M 指定搜索幫助文件的路徑。
    -S 指定搜索源代碼文件的路徑。
  • 使用實例:
    將和**文件相關的文件都查找出來:
    whereis svn
    只將二進制文件查找出來:
    whereis -b svn

locate 快速定位文件位置


  • 命令格式:
    Locate [選擇參數] [樣式]
  • 命令功能:
    locate命令可以在搜尋數據庫時快速找到檔案,數據庫由updatedb程序來更新,updatedb是由cron daemon周期性建立的,locate命令在搜尋數據庫時比由整個由硬盤資料來搜尋資料來得快,但較差勁的是locate所找到的檔案若是最近才建立或 剛更名的,可能會找不到,在內定值中,updatedb每天會跑一次,可以由修改crontab來更新設定值。(etc/crontab)
    locate指定用在搜尋符合條件的檔案,它會去儲存檔案與目錄名稱的數據庫內,尋找合乎范本樣式條件的檔案或目錄錄,可以使用特殊字元(如”” 或”?”等)來指定范本樣式,如指定范本為kcpaner, locate會找出所有起始字串為kcpa且結尾為ner的檔案或目錄,如名稱為kcpartner若目錄錄名稱為kcpa_ner則會列出該目錄下包括 子目錄在內的所有檔案。
    locate指令和find找尋檔案的功能類似,但locate是透過update程序將硬盤中的所有檔案和目錄資料先建立一個索引數據庫,在 執行loacte時直接找該索引,查詢速度會較快,索引數據庫一般是由操作系統管理,但也可以直接下達update強迫系統立即修改索引數據庫。
  • 命令參數:
    -e 將排除在尋找的范圍之外。
    -1 如果 是 1.則啟動安全模式。在安全模式下,使用者不會看到權限無法看到 的檔案。這會始速度減慢,因為 locate 必須至實際的檔案系統中取得檔案的 權限資料。
    -f 將特定的檔案系統排除在外,例如我們沒有到理要把 proc 檔案系統中的檔案 放在資料庫中。
    -q 安靜模式,不會顯示任何錯誤訊息。
    -n 至多顯示 n個輸出。
    -r 使用正規運算式 做尋找的條件。
    -o 指定資料庫存的名稱。
    -d 指定資料庫的路徑
    -h 顯示輔助訊息
    -V 顯示程式的版本訊息
  • 使用實例:
    查找和pwd相關的所有文件:
    locate pwd
    搜索etc目錄下所有以sh開頭的文件:
    locate /etc/sh

find 搜索文件


  • 命令格式:
    find pathname -options [-print -exec -ok ...]
  • 命令功能:
    用于在文件樹種查找文件,并作出相應的處理
  • 命令參數:
    pathname: find命令所查找的目錄路徑。例如用.來表示當前目錄,用/來表示系統根目錄。
    -print: find命令將匹配的文件輸出到標準輸出。
    -exec: find命令對匹配的文件執行該參數所給出的shell命令。相應命令的形式為'command' { } ;,注意{ }和\;之間的空格。
    -ok: 和-exec的作用相同,只不過以一種更為安全的模式來執行該參數所給出的shell命令,在執行每一個命令之前,都會給出提示,讓用戶來確定是否執行。
  • 命令選項:
    -name 按照文件名查找文件。
    -perm 按照文件權限來查找文件。
    -prune 使用這一選項可以使find命令不在當前指定的目錄中查找,如果同時使用-depth選項,那么-prune將被find命令忽略。
    -user 按照文件屬主來查找文件。
    -group 按照文件所屬的組來查找文件。
    -mtime -n +n 按照文件的更改時間來查找文件, - n表示文件更改時間距現在n天以內,+ n表示文件更改時間距現在n天以前。find命令還有-atime和-ctime 選項,但它們都和-m time選項。
    -nogroup 查找無有效所屬組的文件,即該文件所屬的組在/etc/groups中不存在。
    -nouser 查找無有效屬主的文件,即該文件的屬主在/etc/passwd中不存在。
    -newer file1 ! file2 查找更改時間比文件file1新但比文件file2舊的文件。
    -type 查找某一類型的文件,諸如:
    b - 塊設備文件。
    d - 目錄。
    c - 字符設備文件。
    p - 管道文件。
    l - 符號鏈接文件。
    f - 普通文件。
    -size n:[c] 查找文件長度為n塊的文件,帶有c時表示文件長度以字節計。-depth:在查找文件時,首先查找當前目錄中的文件,然后再在其子目錄中查找。
    -fstype:查找位于某一類型文件系統中的文件,這些文件系統類型通常可以在配置文件/etc/fstab中找到,該配置文件中包含了本系統中有關文件系統的信息。
    -mount:在查找文件時不跨越文件系統mount點。
    -follow:如果find命令遇到符號鏈接文件,就跟蹤至鏈接所指向的文件。
    -cpio:對匹配的文件使用cpio命令,將這些文件備份到磁帶設備中。
    另外,下面三個的區別:
    -amin n 查找系統中最后N分鐘訪問的文件
    -atime n 查找系統中最后n24小時訪問的文件
    -cmin n 查找系統中最后N分鐘被改變文件狀態的文件
    -ctime n 查找系統中最后n
    24小時被改變文件狀態的文件
    -mmin n 查找系統中最后N分鐘被改變文件數據的文件
    -mtime n 查找系統中最后n*24小時被改變文件數據的文件
  • 使用實例:
    查找指定時間內修改過的文件 :
    find -atime -2
    根據關鍵字查找 :
    find . -name ".log"
    按照目錄或文件的權限來查找文件 :
    find /usr/fqw/ -perm 777
    按類型查找 :
    find . -type f -name "
    .log"
    查找當前所有目錄并排序:
    find . -type d | sort
    按大小查找文件:
    find . -size +1000c -print

find命令之exec


find是我們很常用的一個Linux命令,但是我們一般查找出來的并不僅僅是看看而已,還會有進一步的操作,這個時候exec的作用就顯現出來了。
exec解釋:
-exec 參數后面跟的是command命令,它的終止是以;為結束標志的,所以這句命令后面的分號是不可缺少的,考慮到各個系統中分號會有不同的意義,所以前面加反斜杠。
{} 花括號代表前面find查找出來的文件名。
使用find時,只要把想要的操作寫在一個文件里,就可以用exec來配合find查找,很方便的。在有些操作系統中只允許-exec選項執行諸如l s或ls -l這樣的命令。大多數用戶使用這一選項是為了查找舊文件并刪除它們。建議在真正執行rm命令刪除文件之前,最好先用ls命令看一下,確認它們是所要刪除的文件。 exec選項后面跟隨著所要執行的命令或腳本,然后是一對兒{ },一個空格和一個\,最后是一個分號。為了使用exec選項,必須要同時使用print選項。如果驗證一下find命令,會發現該命令只輸出從當前路徑起的相對路徑及文件名。

  • 實例
    ls -l命令放在find命令的-exec選項中:
    find . -type f -exec ls -l {} ;
    在目錄中查找更改時間在n日以前的文件并刪除它們:
    find . -type f -mtime +14 -exec rm {} ;
    在目錄中查找更改時間在n日以前的文件并刪除它們,在刪除之前先給出提示:
    find . -name ".log" -mtime +5 -ok rm {} ;
    -exec中使用grep命令:
    find /etc -name "passwd
    " -exec grep "root" {} ;
    查找文件移動到指定目錄 :
    find . -name ".log" -exec mv {} .. ;
    用exec選項執行cp命令 :
    find . -name "
    .log" -exec cp {} test3 ;

find命令之barges


在使用 find命令的-exec選項處理匹配到的文件時, find命令將所有匹配到的文件一起傳遞給exec執行。但有些系統對能夠傳遞給exec的命令長度有限制,這樣在find命令運行幾分鐘之后,就會出現溢出錯誤。錯誤信息通常是“參數列太長”或“參數列溢出”。這就是xargs命令的用處所在,特別是與find命令一起使用。
find命令把匹配到的文件傳遞給xargs命令,而xargs命令每次只獲取一部分文件而不是全部,不像-exec選項那樣。這樣它可以先處理最先獲取的一部分文件,然后是下一批,并如此繼續下去。
在有些系統中,使用-exec選項會為處理每一個匹配到的文件而發起一個相應的進程,并非將匹配到的文件全部作為參數一次執行;這樣在有些情況下就會出現進程過多,系統性能下降的問題,因而效率不高; 而使用xargs命令則只有一個進程。另外,在使用xargs命令時,究竟是一次獲取所有的參數,還是分批取得參數,以及每一次獲取參數的數目都會根據該命令的選項及系統內核中相應的可調參數來確定。

  • 使用實例:
    查找系統中的每一個普通文件,然后使用xargs命令來測試它們分別屬于哪類文件 :
    find . -type f -print | barges file
    在整個系統中查找內存信息轉儲文件(core dump) ,然后把結果保存到/tmp/core.log 文件中:
    find / -name "core" -print | xargs echo "" >/tmp/core.log
    在當前目錄下查找所有用戶具有讀、寫和執行權限的文件,并收回相應的寫權限:
    find . -perm -7 -print | xargs chmod o-w
    用grep命令在所有的普通文件中搜索hostname這個詞
    find . -type f -print | xargs grep "hostname"
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,837評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,196評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,688評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,654評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,456評論 6 406
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,955評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,044評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,195評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,725評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,608評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,802評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,318評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,048評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,422評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,673評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,424評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,762評論 2 372

推薦閱讀更多精彩內容