Linux自學之旅-基礎命令(find搜索命令)
文章目錄
- 前言
- 一、find
- 二、find使用
- 1.根據檔案名進行搜索
- 2.根據檔案大小進行搜索
- 3.根據修改時間進行搜索
- 4.根據權限進行搜索
- 5.根據所有者和所屬組進行搜索
- 6.根據檔案型別進行搜索
- 7.配合邏輯運算子同時進行搜索
- 8.額外選項
- 總結
前言
1.上一節我們講述了locate命令,主要講述了其作用及基本使用,還沒看的請點擊下方鏈接進入:locate命令
2.這一節我們講一個同樣可以通過檔案名進行搜索的命令find,不過find命令功能還強大些,它不只是可以通過檔案名,還可以通過一些其他各種方式進行搜索
提示:以下是本篇文章正文內容
一、find
find命令和locate一樣,可以在目錄中進行搜索檔案,不過locate只能通過檔案名進行一個搜索,而我們的find不一樣,它不止能進行檔案名的搜索,還可以支持多種方式進行一個搜索,
- 命令名稱:find
- 命令全稱:search for files in a directory hierarchy
- 所在路徑:/usr/bin/find
- 執行權限:所有用戶
- 功能描述:查詢目錄下檔案
命令格式
find 查找路徑 [選項] 搜索內容 [額外選項]
find支持的選項有很多,我們下面就慢慢來看,
二、find使用
1.根據檔案名進行搜索
命令格式
find 查找路徑 [選項] 查找內容
選項:
-name:按照檔案名進行查找
-iname:按照檔案名進行查找,不區分大小寫
-inum:按照inode進行查找
舉個例子:
1.如下圖,我find后面接一個我要查找的路徑,一個.代表我要查找當前所在路徑,然后-name選項代表我要以檔案名的方式進行查找,后面的*號代表匹配任意個字符,意思就是我要找以if開頭的所有其他檔案(在當前作業目錄下查找以if開頭的所有檔案,)

2.根據檔案大小進行搜索
命令格式
find 查找路徑 [選項] 查找內容
選項::
-size [+/-]
(+代表搜索比查找大小大的檔案,-代表搜索比查找大小小的檔案)
查找內容:
b:這是以檔案大小查找的默認查找大小,不寫單位的話默認就是512Byte的查找內容
c:搜索單位是c,就是以位元組進行查找
k:搜索單位是k,就是以KB進行查找(小寫k)
M:搜索單位是M,就是以MB進行查找(大寫M)
G:搜索單位是G,就是以GB進行查找(大寫G)
舉例子:
1.find . -size 4k:代表查找本目錄下所有檔案大小為4KB的檔案,

2.find . -size +1M:代表查找本目錄下所有大于1MB的檔案,(如果1前面為-的話那就是查找比1MB小的檔案,這里就不演示了)

3.根據修改時間進行搜索
命令格式
find 查找路徑 [選項] 查找內容
-atime [+ | -]時間:按照檔案訪問時間搜索
-mtime [+ | -]時間:按照檔案資料修改時間搜索
-ctime [+ | -]時間:按照檔案狀態修改時間搜索
這些時間我們之前都講過,現在我就拿-atime來講述一下[+ | -]時間怎么使用,
1.find . -atime 20 :代表在本目錄下搜索前20和21那兩天檔案訪問時間修改過的檔案,

2.find . -atime -1:代表查找本目錄下1天內檔案訪問時間修改過的檔案,

3.find . -atime +2:代表查找本目錄下3天前檔案訪問時間修改過的檔案,

這個又是多少天前多少天內的很難理解吧,大家可以這樣理解
{
-atime -10:像這種數字前面有減號的,我們一概看成多少天內的,-10就代表10天內的,
-atime 20:像這種沒加任何加減號的,我們一概看成前x天和x+1天,現在x=20的話就代表前20天和第21天這兩天的,
-atime +5:像這種數字前面有加號的,我們一概看成x+1天前的,+5就代表6天前的,
}
這樣是不是就很好理解了呢?
4.根據權限進行搜索
命令格式
find 查找路徑 [選項] 查找內容
-perm 權限模式:查找檔案權限剛好等于“權限模式”的檔案
-perm -權限模式:查找檔案權限全部包含“權限模式”的檔案
-perm +權限模式:查找檔案權限包含“權限模式”的任意一個權限的檔案
舉例子:
1.find . -perm 644:代表查找本目錄下所有權限剛好等于644權限的檔案,(644權限:所有者:讀寫;所屬組:讀;其他人:讀)

2.find . -perm -444:代表查詢本目錄下所有包含了444權限的檔案,(也就是檔案的所有者所屬組其他人都有讀權限就可以顯示出來,少一個都不行,但是多的話也可以顯示出來)

3.find . -perm +444:代表查詢本目錄下權限位包含了4權限的檔案(就是不管是所有者還是所屬組其他人,只要你有讀權限,就可以顯示出來,+號和-號的區別就在于,比如-444,你所有者所屬組其他人都必須至少要有讀的權限才可能顯示出來,但是+444呢,你所有者所屬組其他人只要你其中一個部分有讀權限就可以了,也就是不需要你三個部分的人都有444權限,他們只要擁有我+444這個代碼其中的任意一個權限就可以顯示出來)

5.根據所有者和所屬組進行搜索
命令格式
find 查找路徑 [選項] 查找內容
-uid 用戶ID:按照用戶ID查找所有者是指定ID的檔案
-gid 組ID:按照組ID查找所屬組是指定ID的檔案
-user 用戶名:按照用戶名查找所有者是指定用戶的檔案
-group 組名:按照組名查找所屬組是指定用戶組的檔案
-nouser:查找沒有所有者的檔案
舉兩個根據用戶名和組名查找的例子:
1.find . -user root:代表查找當前目錄下所有所有者是root的檔案.

2.find . -group root:代表查找當前目錄下所有所屬組是root的檔案.

至于-nouser選項實際上就是查找那種沒有所有者的檔案,這種沒有所有者的檔案如何產生的呢?比如你在U盤中有一份從windows下復制的檔案,那么這個U盤的這個檔案復制到Linux下的話就是沒有所有者的.
6.根據檔案型別進行搜索
命令格式
find 查找路徑 [選項] 查找內容
-type d:查找目錄
-type f:查找普通檔案
-type l:查找軟鏈接檔案
舉個例子:
1.find . -type f:代表查找當前目錄下所有是普通檔案的檔案.

7.配合邏輯運算子同時進行搜索
命令格式
find 查找路徑 [選項] 查找內容
-a :and邏輯與
-o :or邏輯或
-not :not邏輯非
邏輯運算子的話如果你學過開發那么應該都很清楚,不過這里我怕會有沒有開發經驗的朋友來看我的文章,所以我三個都舉個例子.
-a:and邏輯與=含義是兩方條件都成立的話,find搜索的結果才會成立.
舉例子:
1.find . -user root -a -name jh2.txt:代表查找當前目錄下所有所有者是root并且檔案名為jh2.txt的檔案.(也就是-user和-name中間加個-a的話,就必須要這兩個條件都成立,find才會查找,也就是所有者必須是root的同時檔案名也必須為jh2.txt)

-o:or邏輯或=含義是兩方條件只要有一個成立,find都會進行一個條件查找
舉例子:
2.find . -type f -o -type d:代表查找當前目錄下檔案型別是普通檔案或者檔案型別是目錄的檔案.(-type f 和-type d 中間加了-o的話就代表或者的意思,也就是find會查找檔案型別是f的檔案,或者說查找檔案型別是d的檔案.)

-not:not邏輯非=也就是取反的意思.
舉個例子:
3.find . -not -name jh.txt:代表查詢本目錄下所有不包含檔案名是jh.txt的其他檔案.(這個很好理解,加了-not就代表要取反,如下圖加了-not就是查找除了jh.txt這個檔案以外的所有檔案)

8.額外選項
命令格式
find 查找路徑 [選項] 查找內容 [額外選項]
額外選項:
-exec 命令 {} \; :(-exec選項可以讓你在查詢檔案的同時使用命令對檔案進行操作)
我們拿檔案名進行搜索的方式來舉例子,如下圖,我直接按照檔案名的方式查找snljh2這個檔案的話它會直接在螢屏中顯示./snljh2出來.但是我現在有一個需求,我想要它不僅能搜索snljh2這個檔案出來,我還要它以長格式的方式顯示snljh2這個檔案出來.這就要用到我們的-exec額外選項了.

舉個例子:
1.find . -name snljh2 -exec ls -lh {} \;代表查找當前目錄下檔案名是snljh2的檔案,并以ls -lh的形式顯示出來.
{
1.1:加了-exec額外選項之后代表你在查找一個檔案的同時可以使用一些命令對其進行一些操作.
1.2:-exec后面接ls -lh {}=代表將前面-name snljh2的結果賦予到{}這個框中進行執行,也就是將查找到的snljh2這個檔案放到ls -lh中進行執行.
1.3:-exec ls -lh {} \; =至于后面的\;代表的就是一個結尾的意思,沒有特殊含義.
}

總結
那么本節我們就講到這了,我們主要講了
{
1.find的基本介紹以及它的各種使用方式.
}
下節我們講另外一個搜索命令
我是結花,我們下次見!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/255874.html
標籤:其他
