find命令初探

2021-05-11 16:26:01 字數 3165 閱讀 1964

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

find pathname -options [-print -exec -ok ...]

2、find命令的引數;

pathname: find命令所查詢的目錄路徑。例如用.來表示當前目錄,用/來表示系統根目錄。

-print: find命令將匹配的檔案輸出到標準輸出。

-exec: find命令對匹配的檔案執行該引數所給出的shell命令。相應命令的形式為'command' /;,注意和/;之間的空格。

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

3、find命令選項

-name

按照檔名查詢檔案。

-perm

按照檔案許可權來查詢檔案。

-prune

使用這一選項可以使find命令不在當前指定的目錄中查詢,如果同時使用-depth選項,那麼-prune將被find命令忽略。

-user

按照檔案屬主來查詢檔案。

-group

按照檔案所屬的組來查詢檔案。

-mtime -n +n

按照檔案的更改時間來查詢檔案, - n表示檔案更改時間距現在n天以內,+ n表示檔案更改時間距現在n天以前。find命令還有-atime和-ctime 選項,但它們都和-m time選項。

-nogroup

查詢無有效所屬組的檔案,即該檔案所屬的組在/etc/groups中不存在。

-nouser

查詢無有效屬主的檔案,即該檔案的屬主在/etc/passwd中不存在。

-newer file1 ! file2

查詢更改時間比檔案file1新但比檔案file2舊的檔案。

-type

查詢某一型別的檔案,諸如:

b - 塊裝置檔案。

d - 目錄。

c - 字元裝置檔案。

p - 管道檔案。

l - 符號鏈結檔案。

f - 普通檔案。

-size n:[c] 查詢檔案長度為n塊的檔案,帶有c時表示檔案長度以位元組計。

-depth:在查詢檔案時,首先查詢當前目錄中的檔案,然後再在其子目錄中查詢。

-fstype:查詢位於某一型別檔案系統中的檔案,這些檔案系統型別通常可以在配置檔案/etc/fstab中找到,該配置檔案中包含了本系統中有關檔案系統的資訊。

-mount:在查詢檔案時不跨越檔案系統mount點。

-follow:如果find命令遇到符號鏈結檔案,就跟蹤至鏈結所指向的檔案。

-cpio:對匹配的檔案使用cpio命令,將這些檔案備份到磁帶裝置中。

另外,下面三個的區別:

-amin n

查詢系統中最後n分鐘訪問的檔案

-atime n

查詢系統中最後n*24小時訪問的檔案

-cmin n

查詢系統中最後n分鐘被改變檔案狀態的檔案

-ctime n

查詢系統中最後n*24小時被改變檔案狀態的檔案

-mmin n

查詢系統中最後n分鐘被改變檔案資料的檔案

-mtime n

查詢系統中最後n*24小時被改變檔案資料的檔案

4、使用exec或ok來執行shell命令

使用find時,只要把想要的操作寫在乙個檔案裡,就可以用exec來配合find查詢,很方便的

在有些作業系統中只允許-exec選項執行諸如l s或ls -l這樣的命令。大多數使用者使用這一選項是為了查詢舊檔案並刪除它們。建議在真正執行rm命令刪除檔案之前,最好先用ls命令看一下,確認它們是所要刪除的檔案。

exec選項後面跟隨著所要執行的命令或指令碼,然後是一對兒,乙個空格和乙個/,最後是乙個分號。為了使用exec選項,必須要同時使用print選項。如果驗證一下find命令,會發現該命令只輸出從當前路徑起的相對路徑及檔名。

例如:為了用ls -l命令列出所匹配到的檔案,可以把ls -l命令放在find命令的-exec選項中

上面的例子中,find命令匹配到了當前目錄下的所有普通檔案,並在-exec選項中使用ls -l命令將它們列出。

在/logs目錄中查詢更改時間在5日以前的檔案並刪除它們:

$ find logs -type f -mtime +5 -exec rm /;

記住:在shell中用任何方式刪除檔案之前,應當先檢視相應的檔案,一定要小心!當使用諸如mv或rm命令時,可以使用-exec選項的安全模式。它將在對每個匹配到的檔案進行操作之前提示你。

在下面的例子中, find命令在當前目錄中查詢所有檔名以.log結尾、更改時間在5日以上的檔案,並刪除它們,只不過在刪除之前先給出提示。

按y鍵刪除檔案,按n鍵不刪除。

任何形式的命令都可以在-exec選項中使用。

在下面的例子中我們使用grep命令。find命令首先匹配所有檔名為「 passwd*」的檔案,例如passwd、passwd.old、passwd.bak,然後執行grep命令看看在這些檔案中是否存在乙個sam使用者。

# find /etc -name "passwd*" -exec grep "sam" /;

sam:x:501:501::/usr/sam:/bin/bash

find 命令 Linux命令篇 find命令

find name txt o name pdf print演示結果 find regex txt pdf iregex 忽略大小寫的正則 查詢所有非txt文字 find name txt print演示結果 列印出當前目錄的檔案 深度為1 find maxdepth 1 type f演示結果 5....

find命令 echo命令

find命令 find 起始目錄 尋找條件 查詢的字串 操作 起始目錄 表示 home目錄 表示當前目錄 表示根目錄 尋找條件 常用的 name 按照名字查詢 perm 安裝許可權查詢 prune 不再當前指定的目錄下查詢 user 檔案屬主來查詢 group 檔案所屬組來查詢 nogroup 查詢...

Linux 命令 find 命令

find是日常工具箱中功能更強大 更靈活的命令列工具之一,因此值得花費更多的時間。最簡單的,find跟上路徑尋找一些東西。例如 find 它將找到 並列印出 系統中的每個檔案。而且由於一切都是檔案,你會得到很多需要整理的輸出。這可能不能幫助你找到你要找的東西。你可以改變路徑引數來縮小範圍,但它不會比...