Linux 5大查找命令

Which?

which? [-a]? command

查找系統命令位置,只在$PATH環境變量中查找,并且默認只返回第一個查找結果

參數:

-a 列出所有的查找結果

例:which -a php


Type

type? [option]? command

用于區分某個命令到底是由shell自帶的,還是由shell外部的獨立二進制文件提供的

參數:

-t? 輸出命令的type,如:alias、file、builtin等

-p? 如是外部命令,則輸出絕對地址

例:type -t cd


Whereis

whereis? [-bmsu]? file

whereis命令用于定位可執行文件、源代碼文件、幫助文件在系統中的位置

參數:

-b 查找二進制文件

-m 查找說明文件

-s 查找源代碼文件

-u 查找非上述3種文件的其他文件

例:whereis -b php

PS:whereis默認從數據庫文件(Linux將所有的文件都記錄在一個數據庫文件,但并不實時更新,一般一天更新一次)中查找指定文件,因此whereis比其他從硬盤查找的命令,效率高很多


Find

find? ? ? [path]? ? ?[option]? ? [action]? ? ? ?

find命令可查找指定路徑下所有符合條件的文件或目錄,find命令參數可以擬分成兩大類,一種是普通參數,一種是時間參數

普通參數:

-type 根據文件類型進行搜索

? ? ? ? ? find /usr/bin -type d? ?查找 /usr/bin目錄下所有的目錄

-name 根據文件名進行搜索(-iname 不區分大小寫)

? ? ? ? ? find /usr/bin -name '*.JPG' 查找/usr/bin目錄下以JPG為后綴的文件和目錄

-size 根據文件大小進行搜索(+n 大于 -n 小于)

? ? ? ? ? find /usr/bin -size +10M 查找/usr/bin目錄下大于10M的文件和目錄

-prem 根據文件讀寫權限進行搜索

? ? ? ? ? find /usr/bin -perm 644 查找/usr/bin目錄下讀取權限為644的文件和目錄

-group 根據文件擁有組進行搜索

? ? ? ? ? find /usr/bin -group li 查找/usr/bin目錄下li組的文件或目錄

-empty 匹配空文件或空目錄

? ? ? ? ? find /usr/bin -empty 查找/usr/bin目錄下的空文件和空目錄

時間相關參數:

time 天?

min 分鐘

+n n天(分鐘)之前?

-n n天(分鐘)之內

-atime +n 搜索n天之前被訪問過的文件或目錄

? ? ? ? ? find ./ -atime +5 查找當前目錄下,最后一次訪問時間在5天前的文件或目錄

? ? ? ? ? find /var \! -atime -90? 在/var目錄下找出90天之內未被訪問過的文件

-mtime -n 搜索n天之內被修改過文件內容的文件或目錄

? ? ? ? ? find ./ -mtime -5 查找當前目錄下,5天呃逆有進行過內容修改的文件或目錄

-cmin -n 搜索n分鐘之內被修改過內容、權限、屬性的文件或目錄

? ? ? ? ? find ./ -cmin -5 在當前目錄,搜索5分鐘之內被修改過內容、權限、屬性的文件和目錄

-cnewer file 搜索修改時間(change time:修改文件屬性、權限、內容、大小的時間)比指定文件的修改時間更接近現在的文件或目錄

? ? ? ? ? find ./ -cnewer demo.txt 在當前目錄下,搜索修改時間比demo.txt文件的修改時間更大的文件或目錄

find匹配后執行操作:

預定義操作

? ? ? ? ? find ./ -name '*.bak' -delete 刪除當前目錄下,所有以bak為后綴的文件和目錄

? ? ? ? ? find ./ -name '*.log' -quit 在當前目錄下搜索以log為后綴的文件和目錄,搜索到一個就退出

自定義操作

? ? ? ? ? find ./ -type f -name '*.bak' -exec rm -rf {} \; 查找當前目錄下后綴為bak的文件,并把它們刪除,分號在Bash中有其他意思,因此此處;需要加\轉義

PS:find是從硬盤去檢索文件,因此效率并不高,但是find的功能是最廣,最強大的


Locate

locate? [option]? [option]?

此命令和find / -name類似,但是它是從數據庫文件(Linux將所有的文件都記錄在一個數據庫文件,但并不實時更新,一般一天更新一次)中查找指定文件,因此效率比find快得多

參數:

-i??忽略大小寫

-r? 使用正則表達式做匹配條件

例:locate demo.php


總結

一、5個查找命令中,find、locate、whereis是用來查找具體的文件,which、type是用來查找命令(which也相當于查找文件,但是只查找命令位置)

二、whereis只查找3種類型的文件:二進制文件、說明文件、源代碼文件

三、whereis和locate都是從數據庫文件查找,所以效率最高

四、使用優先級:

? ? ? ? ? 1、區分命令,使用type

? ? ? ? ? 2、查找命令位置,使用which、whereis、type(優先使用whereis)

? ? ? ? ? 3、通過文件名稱查找,優先使用locate,找不到時,updatedb

? ? ? ? ? 4、其他查找條件、或者因數據庫文件未更新,使用whereis、locate查找不到時,使用find

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容