日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

Linux find命令

發(fā)布時(shí)間:2023/12/13 综合教程 43 生活家
生活随笔 收集整理的這篇文章主要介紹了 Linux find命令 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Linux上的find命令是findutil軟件包的一部分, 一般已經(jīng)默認(rèn)集成在了幾乎所有的發(fā)行版中

find命令有非常大的靈活性,可以向其指定豐富的搜索條件(如文件權(quán)限, 屬主, 屬組,文件類(lèi)型,日期和大小等)來(lái)定位系統(tǒng)中的文件和目錄

此外,find還支持對(duì)搜索到的結(jié)果進(jìn)行多種類(lèi)型的命令操作

一. find命令的基本結(jié)構(gòu)如下:

find [paths] [expression] [actions]

find命令接受一個(gè)或多個(gè)路徑(paths)作為搜索范圍,并在該路徑下遞歸的搜索,即搜索完指定的目錄后,還會(huì)對(duì)該目錄下的子目錄進(jìn)行檢索,以及子目錄下的子目錄,直到達(dá)到目錄樹(shù)底部

默認(rèn)情況如果不帶任何搜索條件,find命令會(huì)返回指定目錄下的所有文件,所以常常需要通過(guò)特定的expression對(duì)結(jié)果進(jìn)行篩選

find命令默認(rèn)的action是將所有檢索結(jié)果打印至標(biāo)準(zhǔn)輸出,可以自定義action,讓find命令對(duì)搜索到的結(jié)果執(zhí)行特定的操作

首先查看示例目錄(Desktop)

默認(rèn)find命令會(huì)列出改目錄下的所有文件

為find命令指定expression以篩選出特定的文件

為find命令指定特殊的action(此處 -delete表示刪除搜索結(jié)果)

二. 搜索條件(expression)

1. 根據(jù)文件檢索

find命令中 -name選項(xiàng)可以根據(jù)文件名稱進(jìn)行檢索(區(qū)分大小寫(xiě)), 如需要忽略文件名中的大小寫(xiě), 可以使用 -iname選項(xiàng)

-name和-iname兩個(gè)選項(xiàng)都支持wildcards, 如:

?可以表示任意一個(gè)單一的符號(hào)

*可以表示任意數(shù)量(包括0)的符號(hào)

find /usr -name '*.txt'

find /usr -name ???? (查找/usr目錄下所有的文件名剛好為4個(gè)字符的文件)

有些時(shí)候,你需要在搜索時(shí)匹配某個(gè)文件或目錄的完整路徑,而不僅僅是匹配文件名,可以使用-path或者-ipath選項(xiàng), 如下所示:

2. 根據(jù)文件類(lèi)型檢索

如果只想搜索得到文件或者目錄,即不想它們同時(shí)出現(xiàn)在結(jié)果中,可以使用-type選項(xiàng)指定文件類(lèi)型

-type選項(xiàng)最常用的參數(shù)如下:

f: 文件

d: 目錄

l: 符號(hào)鏈接

3. 檢索空文件

find命令支持 -empty選項(xiàng)用來(lái)檢索為空的文件或目錄。空文件即文件里沒(méi)有任何內(nèi)容,空目錄即目錄中沒(méi)有任何文件或子目錄

find / -type d -empty

4. 反義匹配

find命令也允許用戶對(duì)當(dāng)前的匹配條件進(jìn)行"反義"(類(lèi)似于邏輯非操作)

如需要檢索 /usr下所有文件名不以.txt為后綴的文件,可以使用以下命令

find /usr -type f ! -name '*.txt'

也可以翻轉(zhuǎn)任何其他的篩選條件, 如:

find /usr -type f ! -empty

5. 根據(jù)文件的所屬權(quán)檢索

為了檢索歸屬于特定用戶的文件或者目錄,可以使用-user選項(xiàng)

find / -type f -user root

-group選項(xiàng)則可以根據(jù)文件或目錄屬組進(jìn)行檢索

6. 根據(jù)時(shí)間日期進(jìn)行檢索

根據(jù)文件創(chuàng)建或者修改的時(shí)間進(jìn)行檢索

Linux系統(tǒng)中,與文件相關(guān)聯(lián)的時(shí)間參數(shù)有以下三種:

修改時(shí)間: 最后一次文件內(nèi)容有過(guò)更改的時(shí)間點(diǎn)

訪問(wèn)時(shí)間: 最后一次文件有被讀取過(guò)的時(shí)間點(diǎn)

變更時(shí)間: 最后一次文件有被變更過(guò)的時(shí)間點(diǎn)(如內(nèi)容被修改,或權(quán)限等被修改)

對(duì)應(yīng)的是find命令中的-mtime, -atime, -ctime(cmin等)

該三個(gè)選項(xiàng)的使用準(zhǔn)尋以下示例中的規(guī)則

-mtime 3: 該文件3天前被修改過(guò)

-mtime -3: 該文件3天以內(nèi)被修改過(guò)

-mtime +3: 該文件距離上次修改已經(jīng)超過(guò)3天時(shí)間

find /usr -type f -mtime 3 檢索/usr下兩天前被修改過(guò)的文件

如果覺(jué)得-mtime等選項(xiàng)以天為單位時(shí)間有點(diǎn)長(zhǎng),還可以使用-mmin, -amin, -cmin三個(gè)選項(xiàng):

find /usr -type f -mtime +50 -mtime -100 檢索/usr下50到100天之前被修改過(guò)的文件

find /usr -type f -mtime 2 檢索/usr下兩天前被修改且5分鐘前又讀取過(guò)的文件

7. 根據(jù)文件大小檢索

-size 選項(xiàng)允許用戶通過(guò)文件大小進(jìn)行檢索(只適用于文件,目錄沒(méi)有大小...)

表示文件大小的單位由以下字符組成

c: 字節(jié)

k: Kb

M: Mb

G: Gb

另外,還可以使用+或者-符號(hào)表示大于或者小于當(dāng)前條件

find / -size +1G 檢索文件高于1GB的文件

8. 根據(jù)文件權(quán)限檢索

find命令可以使用 -perm選項(xiàng)以文件權(quán)限為依據(jù)進(jìn)行搜索

使用符號(hào)形式

如需要檢索/usr/目錄下權(quán)限為rwxr-xr-x的文件, 可以使用以下命令

find /usr -perm u=rwx, g=rx, o=rx

搜索/usr目錄下所有權(quán)限為r-xr-xr-x(即系統(tǒng)中的所有用戶都只有讀寫(xiě)權(quán)限)的文件和目錄,可以使用如下命令

find /usr -perm a=rx

很多時(shí)候,我們只想匹配文件權(quán)限的子集.比如,檢索可以直接被任何用戶執(zhí)行的文件,即只關(guān)心文件的執(zhí)行權(quán)限,而不用管其讀寫(xiě)權(quán)限是什么

其中的a=x前面的/符號(hào)即用來(lái)表示只匹配權(quán)限的某個(gè)子集(執(zhí)行權(quán)限), 而不用其他權(quán)限的具體設(shè)置

使用數(shù)字形式

-perm選項(xiàng)也支持?jǐn)?shù)字形式的文件權(quán)限標(biāo)記

find /usr -perm 644搜索 /usr 目錄下權(quán)限644(即rwxr-xr-x)的文件

9. 限制遍歷的層數(shù)

find命令默認(rèn)是以遞歸的方式檢索項(xiàng)目的,這有時(shí)候會(huì)導(dǎo)致得到的結(jié)果數(shù)量非常巨大。可以使用-maxdepth限制find命令遞歸的層數(shù)

find / -maxdepth 3 搜索時(shí)向下遞歸的層數(shù)最大為3

10. 邏輯組合

在之前的例子中出現(xiàn)多個(gè)搜索條件的組合以及對(duì)某個(gè)搜索條件的反轉(zhuǎn)

實(shí)際上find命令支持 and 和 or兩種邏輯運(yùn)算,對(duì)應(yīng)的命令選項(xiàng)分別是-a和-o, 通過(guò)這兩個(gè)選項(xiàng)可以對(duì)搜索條件進(jìn)行更復(fù)雜的組合

此外還可以使用小括號(hào)對(duì)搜索條件進(jìn)行分組,注意find命令中的小括號(hào)常需要用單引號(hào)包裹起來(lái)。因小括號(hào)在shell中有特殊的含義

如檢索/usr 下文件名以python開(kāi)頭且類(lèi)型為目錄的文件

find /usr -type d -name 'python*'

該命令等同于:

find /usr -type d -a -name 'python*'

更復(fù)雜的組合形式如:

find / '(' -mmin -5 -o -mtime +50 ')' -a -type f

三. 對(duì)搜索結(jié)果執(zhí)行命令

1. 刪除文件

-delete選項(xiàng)可以用來(lái)刪除搜索到的文件和目錄

如刪除home目錄下所有的空目錄

find ` -type d -empty -delete

2. 執(zhí)行自定義命令

-exec選項(xiàng)可以對(duì)搜索到的結(jié)果執(zhí)行特定的命令

如需要將home目錄下所有的mp3音頻文件復(fù)制到移動(dòng)存儲(chǔ)設(shè)備(假設(shè)路徑是/media/Mydrive), 可以使下面的命令

find / -type f -name '*.mp3' -exec cp {} /media/Mydrive ';'

其中的大括號(hào){}作為檢索到的文件的占位符,而分號(hào);作為命令結(jié)束的標(biāo)志。因?yàn)榉痔?hào)是shell中有特殊含義的符號(hào),所以需要使用單引號(hào)括起來(lái)

每當(dāng)find命令檢索到一個(gè)符合條件的文件,會(huì)使用其完整路徑取代命令中的{}, 然后執(zhí)行-exec 后面的命令一次

另一個(gè)很重要的用法是,在多個(gè)文件中檢索某個(gè)指定的字符串

如在用戶主目錄下的所有文件中檢索字符串hello, 可以使用如下命令

find / -type f -exec grep -l hello {} ';'

-exec 選項(xiàng)中的+符號(hào)

創(chuàng)建Gzip格式的壓縮文件的命令為: tar -czvf filename.tar <list of files>

現(xiàn)在假設(shè)需要將用戶主目錄下所有的MP3文件添加到壓縮包music.tar.gz中, 直觀的感覺(jué)是:

find / -type f -name '*.mp3' -exec tar -czvf music.tar.gz {} ';'

實(shí)際情況是,這樣得到的music.tar.gz其中只包含一個(gè)MP3文件

原因是find命令每次發(fā)現(xiàn)一個(gè)音頻文件,都會(huì)在執(zhí)行一次-exec選項(xiàng)后面的壓縮命令。導(dǎo)致先前生成的壓縮包被覆蓋

可以先讓find命令檢索出所有符合條件的音頻文件,在將得到的文件列表傳遞給后面的壓縮命令。完整的命令如下:

find / -type f -name '*.mp3' -exec tar -czvf music.tar.gz {} +

顯示文件信息

如果想瀏覽到的文件(目錄)的詳細(xì)信息(如權(quán)限和大小等), 可以直接使用 -ls選項(xiàng)

四.常用參數(shù)匯總

-atime n[smhdw] 距離文件上次被訪問(wèn)時(shí)的時(shí)間間隔
-ctime n[smhdw] 距離文件創(chuàng)建時(shí)的時(shí)間間隔
-delete 刪除檢索到的文件
-depth n 檢索深度為 n 的文件,即位于指定目錄以下 n 層的文件
-empty 檢索空文件或空目錄
-fstype type 指定文件所在的文件系統(tǒng)的類(lèi)型
-group gname 指定文件的屬組
-iname pattern 同 -name,忽略大小寫(xiě)
-ipath pattern 同 -path,忽略大小寫(xiě)
-ls 打印搜索到的文件的詳細(xì)信息
-maxdepth n 指定遞歸的最大層數(shù)為 n
-mtime n[smhdw] 距離文件上次發(fā)生變更時(shí)的時(shí)間間隔
-name pattern 搜索時(shí)使用 pattern 對(duì)文件名進(jìn)行匹配
-path pattern 搜索時(shí)使用 pattern 對(duì)文件路徑進(jìn)行匹配
-perm mode 根據(jù)文件權(quán)限搜索
-size n[ckMGTP] 根據(jù)文件大小搜索
-type t 根據(jù)文件類(lèi)型搜索
-user uname 指定文件的屬主

總結(jié)

以上是生活随笔為你收集整理的Linux find命令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。