shell指令碼 命令3 find 檔案檢索

2021-08-20 14:36:07 字數 2125 閱讀 2295

find是高階的查詢檔案工具。

用法:find  [-h] [-l] [-p]  [-d debugopts]  [-olevel]  [starting-point…]   [expression]

⑴ -h -l -p -d -olevel

-h -l -p都是對symbolic links操作的選項(symbolic links類似於windows下的桌面快捷方式)。

-d 是選擇性列印一些find的查詢資訊

-olevel 是進行一些查詢優化,有查詢等級的劃分

⑵ starting-point:開始搜尋的目錄

⑶ expression:是查詢規則,其中分為tests、actions、global options、positional options、operators。

具體的可以man find一下。

-name filename :

檢索匹配指定檔名的所有檔案。其中,指定的檔名不必包括目錄路徑(從當前目錄開始,遞迴的進行檢索所有子目錄)。

filename可以是單、雙引號括起來的萬用字元組成的字串(這也說明了find工具,接受萬用字元,因為這個萬用字元不是由shell解析的,而是提交給find工具解析的)。

[ex1] 遞迴查詢當前目錄下,所有字尾為.v的檔案

find ./ -name 『*.v』      #在當前目錄下找所有字尾為.v的檔案
[ex2] 使用了命令的替換的形式,遞迴查詢當前目錄下的所有檔案,並複製到./filedirectory目錄下。

cp `find ./ *` ./filedirectory  

cp $(find ./ *) ./filedirectory

-user username:

檢索其檔案屬主匹配指定使用者的所有檔案。

-nouser

檢索其檔案屬主未出現在/etc/passwd檔案中定義的所有檔案。

-atime  [+ -]n

選擇在n天之前,之內或恰好n天訪問過的檔案

「+」表示在之外,「-」表示在之內,不寫「+/-」表示恰好。下同↓↓↓↓

-ctime  [+-]n

選擇在n天之前,之內或恰好n天狀態資訊發生變動的檔案

-mtime  [+-]n

選擇在n天之前,之內或恰好n天修改過檔案內容的檔案

-mmin [+-]n

選擇在n分鐘之前,之內或恰好n分鐘 修改過檔案內容的檔案

find ./ -name '*.v' -mmin -30
-size  [+-]n[cwbkmg]

根據檔案大小來進行選擇。[cwbkmg]是對n的修飾,如果都不加,預設是n個512位元組的資料塊

c :位元組。表示n個位元組

w :雙位元組。表示n個雙位元組

b :512位元組的資料塊(預設)

k :kb為單位

m :mb為單位

g :gb為單位

-newer filename

選擇其修改日期比給定的檔案更近的檔案

-type filetype

檢索指定型別的檔案

f :普通檔案

d :目錄

b :塊特殊檔案

c :字元特殊檔案

p :管道(fifo)檔案

s :套接字檔案

find工具支援邏輯運算子。

形式為:邏輯非「!」、邏輯或「-o」、邏輯與「-a」

使用舉例:

⑴ 邏輯非「!」

find . ! -user root

表示檢索當前目錄下,不屬於root使用者的檔案

⑵ 邏輯或「-o」

find /  \(-name  『*.o』  -o  -name  a.out \)  -atime +30

表示檢索根目錄下超過30天沒有訪問的,擴充套件名為.o或者檔名為a.out的所有檔案。

「\(「轉義字元加個特殊符號,防止shell對其進行了解析

⑶ 邏輯與「-a」

find / -type d -a -user book

表示檢索根目錄下的屬於book使用者的所有子目錄

shell指令碼 find命令

find命令用於查詢,功能很強大,格式如下 find pathname options print exec ok pathname find命令所查詢的目錄路徑。例如用.來表示當前目錄,用 來表示系統根目錄。print find命令將匹配的檔案輸出到標準輸出。exec find命令對匹配的檔案執行...

shell指令碼 命令

命令連線符 表示不管前面是否執行成功都要執行 表示前面執行成功才執行後面 表示前面執行失敗才執行後面 read命令 read 選項 值 read p 提示語句 n 字元個數 t 時間秒 s 不顯示 運算子 expr 3 2 結果賦值 sum expr 3 2 或者 sum 3 2 乘法expr 3 ...

shell指令碼命令

1.建立檔案 home test test.log rootdir home test testfile rootdir test.log touch testfile 2.如果檔案存在則刪除檔案 if f testfile then rm rf testfile fi3.如果檔案不存在則建立檔案 ...