一、find命令簡介
find命令:用于根據(jù)給定的路徑和條件查找相關(guān)文件或目錄,參數(shù)靈活方便,且支持正則表達式,結(jié)合管道符后能夠?qū)崿F(xiàn)更加復(fù)雜的功能。
基本語法格式:find pathname -options 搜索內(nèi)容 [其他選項]
- pathname:用來指定搜索路徑。
- options:用來指定搜索內(nèi)容。
- 搜索內(nèi)容:用來指定搜索內(nèi)容,支持正則表達式。
- 其他選項:
- -print選項:將find命令匹配的文件輸出到標(biāo)準(zhǔn)輸出。
- -exec選項:進一步處理搜索結(jié)果。
find命令通常進行的是從根目錄(/)開始的全盤搜索,不建議過大路徑的搜索范圍,會消耗較大的系統(tǒng)資源,導(dǎo)致服務(wù)器壓力過大。
常用 options參數(shù):
二、常用 options參數(shù)搜索
[root@centos7 temp2]# tree /usr/local/temp2/
/usr/local/temp2/
├── 2023-10-09
│ ├── 10
│ │ └── Test1.log
│ └── test1.log
├── 2023-10-10
│ └── test1.log
├── test.log
└── Test.log
3 directories, 5 files
1、按文件名搜索
options參數(shù):
- -name:按文件名搜索,區(qū)分文件名大小寫
- -iname:按文件名搜索,不區(qū)分文件名大小寫
- -inum: 按inode號搜索
(1)-name和-iname
Linux 中的文件名是區(qū)分大小寫的。
[root@centos7 temp2]# find /usr/local/temp2/ -name test.log
/usr/local/temp2/test.log
[root@centos7 temp2]# find ./ -iname test.log
./test.log
./Test.log
(2)-inum
每個文件都有 inode 號,如果我們知道 inode 號,則也可以按照 inode 號來搜索文件。
# ls -i 顯示文件的inode屬性信息
[root@centos7 temp2]# ll -i ./
total 8
237180303 drwxr-xr-x 3 root root 33 Oct 10 14:21 2023-10-09
252355940 drwxr-xr-x 2 root root 23 Oct 10 14:19 2023-10-10
169322632 -rw-r--r-- 1 root root 32 Oct 10 14:19 test.log
169322631 -rw-r--r-- 1 root root 32 Oct 10 14:19 Test.log
[root@centos7 temp2]# find ./ -inum 169322632
./test.log
[root@centos7 temp2]# find /usr/local/temp2/ -inum 169322632
/usr/local/temp2/test.log
2、按文件類型搜索
options參數(shù):
- -type d:查找目錄
- -type f:查找普通文件
- -type l:查找軟鏈接文件
示例如下:
[root@centos7 temp2]# find /usr/local/temp2/ -type f
/usr/local/temp2/2023-10-09/test1.log
/usr/local/temp2/2023-10-09/10/Test1.log
/usr/local/temp2/2023-10-10/test1.log
/usr/local/temp2/test.log
/usr/local/temp2/Test.log
[root@centos7 temp2]# find /usr/local/temp2/ -type d
/usr/local/temp2/
/usr/local/temp2/2023-10-09
/usr/local/temp2/2023-10-09/10
/usr/local/temp2/2023-10-10
3、基于目錄深度搜索
find 命令是遞歸遍歷查找文件夾,列出當(dāng)前目錄及子目錄下所有文件。
options參數(shù):
- -maxdepth LEVELS:按最大深度顯示。
- -mindepth LEVELS:按最少深度顯示。
示例如下:
# 搜索目錄下面最多1個子目錄深度的所有目錄
[root@centos7 temp2]# find /usr/local/temp2/ -maxdepth 1 -type d
/usr/local/temp2/
/usr/local/temp2/2023-10-09
/usr/local/temp2/2023-10-10
# 搜索目錄下面最多1個子目錄深度的所有文件
[root@centos7 temp2]# find /usr/local/temp2/ -maxdepth 1 -type f
/usr/local/temp2/test.log
/usr/local/temp2/Test.log
# 搜索目錄下面最少1個子目錄深度的所有文件
[root@centos7 temp2]# find /usr/local/temp2/ -mindepth 1 -type f
/usr/local/temp2/2023-10-09/test1.log
/usr/local/temp2/2023-10-09/10/Test1.log
/usr/local/temp2/2023-10-10/test1.log
/usr/local/temp2/test.log
/usr/local/temp2/Test.log
# 搜索目錄下面最少2個子目錄深度的所有文件
[root@centos7 temp2]# find /usr/local/temp2/ -mindepth 2 -type f
/usr/local/temp2/2023-10-09/test1.log
/usr/local/temp2/2023-10-09/10/Test1.log
/usr/local/temp2/2023-10-10/test1.log
4、按修改時間搜索
options參數(shù):
- -atime[±]時間:按文件訪問時間搜索,記錄文件最后一次被訪問的時間。
- -mtime[±]時間:按文件數(shù)據(jù)修改時間搜索,當(dāng)對這個文件內(nèi)容進行修改后,modify顯示的時間就會更新一次。
- -ctime[±]時間:按文件狀態(tài)修改時間搜索,當(dāng)文件內(nèi)容、更改文件權(quán)限,鏈接屬性時隨文件inode更改而改變的時間。
以-mtime來舉例 “[±]” 時間的含義:
- +5:代表 6天前修改的文件。
- 5:代表前 5-6天的那一天修改的文件。
- -5:代表最近 5天內(nèi)修改的文件。
示例如下:
# 查找 6天前修改的內(nèi)容
[root@centos7 temp2]# find /usr/local/temp2 -mtime +5
# 查找 5~6 天那一天修改的內(nèi)容
[root@centos7 temp2]# find /usr/local/temp2 -mtime 5
# 查找 5天內(nèi)修改的文件,最大深度為1
[root@centos7 temp2]# find /usr/local/temp2 -maxdepth 1 -type f -mtime -5
/usr/local/temp2/test.log
/usr/local/temp2/Test.log
# 查找最近 5天內(nèi)修改的目錄,最大深度為1
[root@centos7 temp2]# find /usr/local/temp2 -maxdepth 1 -type d -mtime -5
/usr/local/temp2
/usr/local/temp2/2023-10-09
/usr/local/temp2/2023-10-10
5、按文件大小搜索
options參數(shù):
- -size[±]大?。喊凑罩付ù笮∷阉魑募?。
其中:
- +:表示搜索比指定大小還要大的文件。
- -:表示搜索比指定大小還要小的文件。
find 默認的單位是512Byte,如果單位為b或不寫單位,則按照 512Byte搜索,其他大小搜索單位如下:
'c' for bytes
#搜索單位是c,按照字節(jié)搜索
'w' for two-byte words
#搜索單位是w,按照雙字節(jié)(中文)搜索
'k'for Kilobytes (units of 1024 bytes)
#按照KB單位搜索,必須是小寫的k
'M' for Megabytes (units of 1048576 bytes)
#按照MB單位搜索,必須是大寫的M
'G' for Gigabytes (units of 1073741824 bytes)
#按照GB單位搜索,必須是大寫的G
示例如下:
# 查找最近 5天內(nèi)修改的文件,最大深度為1,size小于2M
[root@centos7 temp2]# find /usr/local/temp2 -maxdepth 1 -type f -mtime -5 -size -2M
/usr/local/temp2/test.log
/usr/local/temp2/Test.log
三、其他選項
1、-print選項
基本語法格式:find pathname -options 搜索內(nèi)容 -print
-print選項:將find命令匹配的文件輸出到標(biāo)準(zhǔn)輸出到屏幕。
[root@centos7 temp2]# find /usr/local/temp2 -maxdepth 1 -type f -mtime -5 -print
/usr/local/temp2/test.log
/usr/local/temp2/Test.log
[root@centos7 temp2]# find /usr/local/temp2 -maxdepth 1 -type d -mtime -5 -print
/usr/local/temp2
/usr/local/temp2/2023-10-09
/usr/local/temp2/2023-10-10
2、-exec選項
基本語法格式:find pathname -options 搜索內(nèi)容 -exec 命令2 {} ;
-exec選項:作用其實是把 find 命令的結(jié)果交給由"-exec"調(diào)用的 命令2 來處理。
- “{}”:代表 find 命令的査找結(jié)果,
- “;”:\ 做轉(zhuǎn)義,;是結(jié)束符。
注意:
這里的“{}”和“;”是標(biāo)準(zhǔn)格式,只要執(zhí)行”-exec"選項,這兩個符號必須完整書寫,并且{} 與 \之間有空格。
示例1:找到文件并打印 inode 號
[root@centos7 temp2]# find /usr/local/temp2 -type f -mtime -5 -exec ls -i {} \;
237180309 /usr/local/temp2/2023-10-09/test1.log
69506504 /usr/local/temp2/2023-10-09/10/Test1.log
252355944 /usr/local/temp2/2023-10-10/test1.log
169322632 /usr/local/temp2/test.log
169322631 /usr/local/temp2/Test.log
示例1:找到文件并刪除
[root@centos7 temp2]# find /usr/local/temp2 -maxdepth 1 -type f -mtime -5 -exec rm -rf {} \;
[root@centos7 temp2]# ls
2023-10-09 2023-10-10
3、-ok選項
基本語法格式:find pathname -options 搜索內(nèi)容 -ok 命令2 {} ;
-ok選項與"-exec"選項的作用基本一致,區(qū)別在于:
- “-exec”的命令2會直接處理,而不詢問;
- “-ok”的命令2 在處理前會先詢問用戶是否這樣處理,在得到確認命令后,用戶輸入y才會執(zhí)行。
示例:找到目錄并詢問用戶是否刪除。
[root@centos7 temp2]# find /usr/local/temp2 -mindepth 2 -type f -mtime -5 -print
/usr/local/temp2/2023-10-09/test1.log
/usr/local/temp2/2023-10-09/10/Test1.log
/usr/local/temp2/2023-10-10/test1.log
[root@centos7 temp2]# find /usr/local/temp2 -mindepth 2 -type d -mtime -5 -print
/usr/local/temp2/2023-10-09/10
# 找到目錄并詢問用戶是否刪除。# 需要用戶輸入y,才會執(zhí)行
[root@centos7 temp2]# find /usr/local/temp2 -mindepth 2 -type d -mtime -5 -ok rm -rf {} \;
< rm ... /usr/local/temp2/2023-10-09/10 > ? y
[root@centos7 temp2]# find /usr/local/temp2 -mindepth 2 -type d -mtime -5 -print
[root@centos7 temp2]# find /usr/local/temp2 -mindepth 2 -type f -mtime -5 -print
/usr/local/temp2/2023-10-09/test1.log
/usr/local/temp2/2023-10-10/test1.log
參考文章:文章來源:http://www.zghlxwxcb.cn/news/detail-751686.html
- find命令 – 根據(jù)路徑和條件搜索指定文件:https://www.linuxcool.com/find
– 求知若饑,虛心若愚。文章來源地址http://www.zghlxwxcb.cn/news/detail-751686.html
到了這里,關(guān)于Linux[find命令]-根據(jù)路徑和條件搜索指定文件并刪除的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!