這里總結(jié)一些常用到的關(guān)于find的命令的操作:
Find命令的一般形式為:
讓我們來看看該命令的參數(shù):
pathname find命令所查找的目錄路徑。例如用.來表示當(dāng)前目錄,用/來表示系統(tǒng)根目錄。
-print find命令將匹配的文件輸出到標(biāo)準(zhǔn)輸出。
-exec find命令對(duì)匹配的文件執(zhí)行該參數(shù)所給出的shell命令。
-ok 和- exec的作用相同,只不過以一種更為安全的模式來執(zhí)行該參數(shù)所給出的shell命令,在執(zhí)行每一個(gè)命令之前,都會(huì)給出提示,讓用戶來確定是否執(zhí)行.
find命令選項(xiàng)
1. -name 按照文件名查找文件
2.-perm 按照文件權(quán)限來查找文件
3.-mtime -n +n 按照文件的更改時(shí)間來查找文件,-n表示文件更改時(shí)間距現(xiàn)在n天以內(nèi),+n表示文件更改時(shí)間距現(xiàn)在n天以前。
如果想使用find命令的這一選項(xiàng)來查找更改時(shí)間在兩個(gè)小時(shí)以內(nèi)的文件,除非有一個(gè)現(xiàn)成
的文件其更改時(shí)間恰好在兩個(gè)小時(shí)以前,否則就沒有可用來比較更改時(shí)間的文件,為了解決
這一問題,可以首先創(chuàng)建一個(gè)文件并將其日期和時(shí)間戳設(shè)置為所需要的時(shí)間。這可以用touch
命令來實(shí)現(xiàn),假設(shè)現(xiàn)在的時(shí)間是21:40,希望查找更改時(shí)間在兩個(gè)小時(shí)以內(nèi)的文件,可以首先創(chuàng)建這樣
一個(gè)文件
4.-newer file1 查找更改時(shí)間比文件file1新的文件。
5.-type 查找某一類型的文件
b - 塊設(shè)備文件。
d - 目錄。
c - 字符設(shè)備文件。
p - 管道文件。
l - 符號(hào)鏈接文件。
f - 普通文件。
6.使用size選項(xiàng)
可以按照文件長(zhǎng)度來查找文件,這里所指的文件長(zhǎng)度既可以用塊(block)來計(jì)量,也可以用字節(jié)來計(jì)量。以字節(jié)計(jì)量文件長(zhǎng)度的表達(dá)形式為 Nc;以塊計(jì)量文件長(zhǎng)度只用數(shù)字表示即可。
7 find 和 xargs
在使用find命令的-exec選項(xiàng)處理匹配到的文件時(shí),find命令將所有匹配到的文件一起傳遞
給exee執(zhí)行
Find命令的一般形式為:
Shell代碼
- # find pathname -options [-print -exec -ok]
讓我們來看看該命令的參數(shù):
pathname find命令所查找的目錄路徑。例如用.來表示當(dāng)前目錄,用/來表示系統(tǒng)根目錄。
-print find命令將匹配的文件輸出到標(biāo)準(zhǔn)輸出。
-exec find命令對(duì)匹配的文件執(zhí)行該參數(shù)所給出的shell命令。
-ok 和- exec的作用相同,只不過以一種更為安全的模式來執(zhí)行該參數(shù)所給出的shell命令,在執(zhí)行每一個(gè)命令之前,都會(huì)給出提示,讓用戶來確定是否執(zhí)行.
find命令選項(xiàng)
1. -name 按照文件名查找文件
Java代碼
- find -name test.txt
- # find ~ -name "xxx.txt" -print// ~ 表示$HOME目錄
- # find . -name "xxx.txt" -print// . 表示當(dāng)前目錄
- # find /etc -name "host*" -print// / 在指定目錄中查找
2.-perm 按照文件權(quán)限來查找文件
Java代碼
- find -perm 755
- # find ~ -perm 755 -print // 意義同name屬性
- # find . -perm 755 -print
- # find /home -perm 755 -print
3.-mtime -n +n 按照文件的更改時(shí)間來查找文件,-n表示文件更改時(shí)間距現(xiàn)在n天以內(nèi),+n表示文件更改時(shí)間距現(xiàn)在n天以前。
Java代碼
- find -mtime -2
如果想使用find命令的這一選項(xiàng)來查找更改時(shí)間在兩個(gè)小時(shí)以內(nèi)的文件,除非有一個(gè)現(xiàn)成
的文件其更改時(shí)間恰好在兩個(gè)小時(shí)以前,否則就沒有可用來比較更改時(shí)間的文件,為了解決
這一問題,可以首先創(chuàng)建一個(gè)文件并將其日期和時(shí)間戳設(shè)置為所需要的時(shí)間。這可以用touch
命令來實(shí)現(xiàn),假設(shè)現(xiàn)在的時(shí)間是21:40,希望查找更改時(shí)間在兩個(gè)小時(shí)以內(nèi)的文件,可以首先創(chuàng)建這樣
Java代碼
- # touch -t 02032140 dstamp
- # ls -l dstamp
- -rw-r--r-- 1 root root 0 2月 3 21:40 dstamp
- # find . -newer dstamp
一個(gè)文件
4.-newer file1 查找更改時(shí)間比文件file1新的文件。
Java代碼
- # find -newer test.txt
5.-type 查找某一類型的文件
b - 塊設(shè)備文件。
d - 目錄。
c - 字符設(shè)備文件。
p - 管道文件。
l - 符號(hào)鏈接文件。
f - 普通文件。
Java代碼
- # find -type d
- # find . ! -type d //查找當(dāng)前目錄下不是目錄文件的其他文件
- # find ~ -type d//意義同name
- # find /etc -type d//意義同name
6.使用size選項(xiàng)
可以按照文件長(zhǎng)度來查找文件,這里所指的文件長(zhǎng)度既可以用塊(block)來計(jì)量,也可以用字節(jié)來計(jì)量。以字節(jié)計(jì)量文件長(zhǎng)度的表達(dá)形式為 Nc;以塊計(jì)量文件長(zhǎng)度只用數(shù)字表示即可。
Java代碼
- # find . -size -1000000c//當(dāng)前目錄下查找文件長(zhǎng)度小于1M字節(jié)的文件
- # find . -size +100c
7 find 和 xargs
在使用find命令的-exec選項(xiàng)處理匹配到的文件時(shí),find命令將所有匹配到的文件一起傳遞
給exee執(zhí)行
Java代碼
- # find . -name "core" -print | xargs echo "" >/tmp/core.log//整個(gè)系統(tǒng)中查找內(nèi)存信息轉(zhuǎn)儲(chǔ)文件然后把結(jié)果保存到/tmp/core.log 文件中
- # find /apps/audit -perm -7 -print | xargs chmod o-w//在/apps/audit目錄下查找所有用戶具有讀、寫和執(zhí)行權(quán)限的文件,并收回相應(yīng)的寫權(quán)限
- # find / -type f -print | xargs grep "device"http://用grep命令在所有的普通文件中搜索device這個(gè)詞