SHELL指令碼程式設計之檔案查詢

2021-10-24 21:21:53 字數 3754 閱讀 7569

find命令

語法格式

find

[路徑]

[選項]

[操作]

選項引數對照表選項

含義-name

根據檔名查詢

-perm

根據檔案許可權查詢

-prune

通常和-path一起使用,用於將特定目錄排除在搜尋條件之外 該選項可以排除某些查詢目錄

-user

根據檔案屬主查詢

-group

根據檔案屬組查詢

-mtime

根據檔案更改時間查詢

-nogroup

查詢無有效屬組的檔案

-nouser

查詢無有效屬主的檔案

-newer file1 !file2

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

-type

按檔案型別查詢

-size

按檔案大小查詢

-mindepth n

從n級子目錄開始搜尋

-maxdepth n

最多搜尋到n級子目錄

-exec

對搜尋到的檔案執行特定的操作,格式為-execcommand{} \;

注:1、{} 和 \ 之間有空格

2、\ 和 ; 之間沒有空格!

例項

-type

f 檔案 find

. -type f

d 目錄 find

. -type d

c 字元裝置檔案 find

. -type c

b 塊裝置檔案 find

. -type b

l 鏈結檔案 find

. -type l

p 管道檔案 find .-type p

目錄下以conf結尾的檔案

find /etc -name '*conf'

#-name不區分大小寫

查詢當前目錄下檔名為aa的檔案,不區分大小寫

find

. -iname aa

查詢檔案屬主為hdfs的所有檔案

find

. -user hdfs

查詢檔案屬組為yarn的所有檔案

find

. -group yarn

查詢/etc目錄下小於10000位元組的檔案

find /etc -size -10000c

查詢/etc目錄下大於1m的檔案

find /etc -size +1m

-mtime

-n n天以內修改的檔案

+n n天以外修改的檔案

n 正好n天修改的檔案

查詢/etc目錄下5天之內修改且以conf結尾的檔案

find /etc -mtime -5 -name1 '*.conf'

查詢/etc目錄下10天之前修改且屬主為root的檔案

find /etc -mtime +10 -user root

查詢/etc目錄下30分鐘之前修改的檔案

find /etc -mmin +30

查詢/etc目錄下30分鐘之內修改的目錄

find /etc -mmin -30 -type d

在/etc下的3級子目錄開始搜尋

find /etc -mindepth 3

在/etc下搜尋符合條件的檔案,但最多搜尋到2級子目錄

find /etc -maxdepth 2 -type f -name '*.conf'

查詢沒有屬主的使用者

find

. -type f -nouser

查詢沒有屬組的使用者

find .-type f -nogroup

-perm例子:

find.-perm 664

查詢當前目錄下所有普通檔案,但排除test目錄

find

. -path ./etc -prune -o -type f

查詢當前目錄下所有普通檔案,但排除etc和opt目錄

find

. -path . /etc -prune -o -path ./opt -prune -o -type f

查詢當前目錄下所有普通檔案,但排除etc和opt目錄,但屬主為hdfs

find

. -path ./etc -prune -o -path ./opt -prune -o -type f -a -user hdfs

查詢當前目錄下所有普通檔案,但排除etc和opt目錄,但屬主為hdfs,且檔案大小必須大於500位元組

find

. -path ./etc -prune -o -path ./opt -prune -o -type f -a -user hdfs -a -size +500c

搜尋/etc下的檔案(非目錄),檔名以conf結尾,且大於10k,然後將其刪除

find

. /etc/ -type f -name '*.conf' -size +10k -exec rm -f \;

將/var/1og/目錄下以1og結尾的檔案,且更改時間在7天以上的刪除

find /var/log/ -name '*.log' -mtime +7 -exec rm -rf \;

搜尋/etc下的檔案(非目錄),檔名以conf結尾,且大於10k,將其複製到/root/conf目錄下

find

. /etc/ -size +10k -type f -name '*.conf' -exec cp

/root/conf/ \;

-ok 和exec功能一樣,只是每次操作都會給使用者提示

邏輯運算子:

-a 與

-o 或

-not |

! 非

查詢當前目錄下,屬主不是hdfs的所有檔案

find

. -not -user hdfs |

find

.! -user hdfs

查詢當前目錄下,屬主屬於hdfs,且大小大於300位元組的檔案

find

. -type f -a -user hdfs -a -size +300c

查詢當前目錄下的屬主為hdfs或者以xm1結尾的普通檔案

find

. -type f -a \( -user hdfs -o -name '*.xml' \)

find、locate、whereis和which總結及適用場景分析

locate命令

updatedb命令

whereis命令選項

含義-b

只返回二進位制檔案

-m只返回幫助文件檔案

-s只返回源**檔案

which命令

僅查詢二進位制程式檔案

選項含義

-b只返回二進位制檔案

各命令使用場景推薦命令

適用場景

優缺點find

查詢某一類檔案,比如檔名部分一致

功能強大,速度慢

locate

只能查詢單個檔案

功能單一,速度快

whereis

查詢程式的可執行檔案、幫助文件等

不常用which

只查詢程式的可執行檔案

常用於查詢程式的絕對路徑

Shell指令碼程式設計之Shell檔案包含

1.和其他語言一樣,shell也可以包含外部指令碼,這樣可以很方便的封裝一些公用的 作為獨立的檔案 例項 testshellfileinclude.sh 指令碼如下 bin bash shell 檔案包含的語法格式如下 filename orsource filename 使用 號來引用test1....

Shell指令碼程式設計之Shell函式

1.linux shell可以使用者定義函式,然後在shell指令碼中可以隨便呼叫 shell中函式的定義格式如下 function funname 1 可以帶function fun 定義,也可以直接fun 定義,不帶任何引數 2 引數返回,可以顯示加 return返回,如果不加,將以最後一條命令...

Shell指令碼程式設計之Shell陣列

1.bash支援一維陣列 不支援多維陣列 並且沒有限定陣列的大小 1 定義陣列 array name value0 value1 value2 value3 或者array name value0 value1 value2 value3 或者單獨定義 2 讀取陣列 使用 符號可以獲取陣列中的所有元...