1. 程式人生 > >linux搜索命令---find

linux搜索命令---find

幫助 當前 find命令的使用 精確 處理 搜索 color centos b-

強大的find命令在linux中是用來在指定目錄下查找文件的,對於find命令來說任何位於參數之前的字符串都將被視為將要被查找的目錄名,而如果使用該命令時,不設置任何參數,則find命令將默認在當前目錄下查找子目錄與文件,並且將查找到的子目錄和文件全部進行顯示。

一、find 命令格式 (即語法)

1、find命令的一般形式為:

# find 查找路徑名 -options [-print -exec -ok ...]

*查找路徑名:指定具體的目標路徑,默認為當前目錄。

*options(查找條件):指定的查找標準,可以為文件名、大小、類型、權限等標準,默認為找出指定路徑下的文件

*處理動作:對符合的文件做操作,默認打印輸出至屏幕。

2、find命令的參數:

# pathname: 在find命令所查找的目錄路徑中,可以用.來表示當前目錄,用/來表示系統根目錄。

# -exec: find命令對匹配的文件執行該參數所給出的shell命令時,相應命令的形式為"command { } \; ",這裏要註意"{ }"和“\;”之間的空格。

# -ok: 和-exec的作用相同,只不過以一種更為安全的模式來執行該參數所給出的shell命令,在執行每一個命令之前,都會給出提示,讓用戶來確定是否執行。

二、find命令工作特點

1、 優點:

#實時查找

#精確查找,搜索整個目錄下所有文件

#可以對查詢到的文件驚喜指定動作,即查看、刪除、移動等等。

2、缺點:

#查找速度太慢

三、find命令的使用

我們可以把查詢條件想象的分為兩類,即選項和測試條件

1、find命令選項

#指定目錄的查找範圍

* -mindepth N 最小搜索深度

* -maxdepth N 最大搜索深

* -mindepth N -maxdepth N 只搜索指定深度

#查找空文件

* -empty 查詢內容為空的文件

#排除符號連接

* -follow 排除符號連接

2、 find命令測試條件

#根據文件名進行查找

* -name "文件名”以文件名進行查找,支持使用glob

* -iname "文件名” 按文件名不區分大小寫查找,只支持glob風格的查找方式:*,[],[^],?

* -regex "文件名”基於正則表達式查找文件,正則部分要用引號引起來,同時要表示文件的完整路徑,搜索當前目錄時,用./,搜索指定目錄時如/app,則用/app/....

* -inum inode號 以inode號為查找條件

* -samefile name 找出與name inode相同的文件

* -links n 找到硬鏈接數為n的文件

#根據文件從屬關系進行查找

* -user 用戶名:查找屬主為指定用戶(UID)的文件

* -group 組名 :查找屬組為指定組(GID)的文件

* -uidUserID:查找屬主為指定的UID號的文件

* -gidGroupID:查找屬組為指定的GID號的文件

* -nouser:查找沒有屬主的文件

* -nogroup:查找沒有屬組的文件

#根據文件類型進行查找 -type "類型”

* f: 普通文件

* d: 目錄文件

* l: 符號鏈接文件

* s:套接字文件

* b: 塊設備文件

* c: 字符設備文件

* p: 管道文件

#根據文件大小進行查找

* -size [+|-]#UNIT 常用單位:k, M, G,c(byte) 註釋: #UNIT: (#-1, #] ,如6k表示(5k,6k];+#UNIT :(#,∞) ,如+6k表示(6k,∞);-#UNIT:[0,#-1] ,如-6k 表示[0,5k]。

#根據時間進行查找

* -atime[+|-]time/-amin[+|-]time 以訪問時間(天/分鐘)查找

* -mtime[+|-]time/-mmin[+|-]time 以數據修改時間(天/分鐘)查找

* -ctime[+|-]time/-cmin[+|-]time 以元數據修改時間(天/分鐘)查找

#根據文件權限進行查找

* -perm MODE 精確權限匹配

* -perm /MODE :任何一類(u,g,o)對象的權限中只要能一位匹配即可,相互之間表示或的關系,"+"等同於“/”,但“+” 從centos7開始淘汰

* -perm -MODE :每一類對象都必須同時擁有指定權限,相互之間表示與的關系

#組合條件測試

* 內容包含 與:-a 或:-o 非: -not

* 德 摩根定律:

非(A且B)=(非A)或(非B); 非 (A或B)=(非A)且(非B)

3、 處理動作

# -print (默認) 查找的結果打印到終端

# -ls 查找的結果顯示詳細信息,以長文件的格式輸出

# -delete 將查找的結果刪除,不交互

# -ok shell command {} \; 查找到的文件傳遞給COMMAND命令,提每步都給用戶提示確認操作(交互執行shell命令)

# -exec shell command {} \; 查找到的文件傳遞給COMMAND命令,直接修改完成,不給用戶確認(非交互執行shell命令)

# 註意:find將查找到的文件路徑一次性傳遞給後面的命令,但有很多命令不能接受過長的參數,從而將會導致命令執行失敗,所以有時我們需要借助xargs命令,來幫助我們進行參數的傳遞,例如 :

[root@centos6 ~]# find /etc -type f | xargs -i {} cp/app/tmp -i參數是由find命令的結果傳給xargs命令的,並且由-i指定結果代替符 {}。



























二、

linux搜索命令---find