Linux 查詢命令find(一)

2021-10-01 10:55:25 字數 4483 閱讀 7781

說道查詢命令,第乙個想到的就是find,用法多樣,加上-exec,你可以玩的很開心。小缺點是需要遍歷目錄下所有,查詢會比較慢。例如遍歷/下查詢,尤其是系統中檔案非常多時,你可以先去聽首歌,再來看結果(當然了,這有點誇張!)。

[root@salt-master test03]#  find /etc/ -name network

/etc/sysconfig/network

/etc/vmware-tools/scripts/vmware/network

/etc/rc.d/init.d/network

一般情況下,查詢範圍越大,目錄層級越深,查詢速度就越慢。

[root@salt-master test03]# time  find / -name ifcfg-eth0

real 0m0.850s

user 0m0.239s

sys 0m0.598s

注意:real遠大於user加上sys,因為find需要遍歷各個目錄,需要大量的i/o操作,而磁碟i/o通常是最慢的環節,因此大部分時間find程序都在等待磁碟i/o完成。

1、按照檔名搜尋

-name: 按名字查詢

-iname:忽略大小寫

[root@salt-master test03]# find /etc -name networkmanager

[root@salt-master test03]# find /etc -iname networkmanager

/etc/networkmanager

2、按照檔案型別查詢 -type
f:  普通檔案

d: 目錄

l: 軟連線

......

[root@salt-master test03]# ll

total 4

drwxr-xr-x 2 root root 4096 dec 13 15:47 01

-rw-r--r-- 1 root root 0 dec 13 15:47 02

[root@salt-master test03]# find . -type f

./02

[root@salt-master test03]# find . -type d

../01

3、按照時間查詢
[root@salt-master test03]# stat 檔名  可以檢視檔案的三個時間

atime:訪問時間,cat more less ... ...

mtime:檔案的內容發生變化的時間,vim ... ... (也是 ll 所顯示的時間)

ctime:檔案的屬性發生變化的時間,比如:許可權改變、大小改變、所有者、所屬組等改變

-atime n 以天為單位

-amin n 以分鐘為單位

-mtime n 以天為單位

n為數字,前面可以帶+或者-號

+n:n+1天之前

n :n到n+1天之間

-n:n天以內

1.查詢/find下修改時間在24小時(1天)之內的檔案和目錄

[root@salt-master test03]# find . -mtime -1

./01

./02

2.查詢/find下修改時間在2天前的普通檔案

[root@salt-master test03]# ll

total 8

drwxr-xr-x 2 root root 4096 dec 13 15:47 01

-rw-r--r-- 1 root root 0 dec 13 15:47 02

-rw-r--r-- 1 root root 193 apr 12 2019 11.txt

[root@salt-master test03]# find . -type f -mtime +1

./11.txt

4、按照使用者和組查詢
-user 使用者名稱

-group 組名

-uid uid

-gid gid

-nouser:孤兒檔案,沒有所有者的檔案

-nogroup:沒有所屬組的檔案

1.查詢系統中所有者是finduser的檔案

[root@salt-master test03]# useradd finduser

[root@salt-master test03]# find / -user finduser -type f

/var/spool/mail/finduser

/home/finduser/.bash_logout

/home/finduser/.bashrc

/home/finduser/.bash_profile

2.查詢系統中的孤兒檔案

[root@salt-master test03]# userdel finduser

[root@salt-master test03]# find /home/ -type f -nouser

/home/finduser/.bash_logout

/home/finduser/.bashrc

/home/finduser/.bash_profile

6、按照檔案大小查詢 -size
+        大於

- 小於

直接數字 等於

『b』 for 512-byte blocks (this is the default if no suffix is used)

『c』 for bytes

『w』 for two-byte words

『k』 for kilobytes (units of 1024 bytes)

『m』 for megabytes (units of 1048576 bytes)

『g』 for gigabytes (units of 1073741824 bytes)

[root@salt-master test03]# ll -h

total 5.1m

drwxr-xr-x 2 root root 4.0k dec 13 15:47 01

-rw-r--r-- 1 root root 0 dec 13 15:47 02

-rw-r--r-- 1 root root 5.0m dec 13 16:40 04

-rw-r--r-- 1 root root 193 apr 12 2019 11.txt

[root@salt-master test03]# find . -type f -size 3m

[root@salt-master test03]# find . -type f -size -3m

./02

./11.txt

[root@salt-master test03]# find . -type f -size 3m

[root@salt-master test03]# find . -type f -size +3m

./04

-exec 動作   -- 找到結果之後直接執行動作

-ok 動作 -- 執行動作之前先提示,即需要互動

[root@salt-master test03]# find . -type f -size +3m

./04

[root@salt-master test03]# find . -type f -size +3m -exec ls -l {} \;

-rw-r--r-- 1 root root 5242880 dec 13 16:40 ./04

{} —— 用來代替找到的結果

\; —— 表示結束標誌

[root@salt-master test03]# find . -type f -size +3m -ok ls -l {} \;

< ls ... ./04 > ? y

-rw-r--r-- 1 root root 5242880 dec 13 16:40 ./04

[root@salt-master test03]# find . -type f -size +3m -ok ls -l {} \;

< ls ... ./04 > ? n

例如,有時候只想修改當前目錄下所有檔案許可權為644,但不想修改目錄許可權,可以如下操作

find ./* -type f -exec chmod 644 {} ;

了解了-exec後,find和其他命令的組合起來使用,會使它的功能變得會非常強大和方便。

linux查詢命令find

在當前目前下查詢檔案 test.txt find name test.txt在 home 目錄下查詢test.txt find home name test.txt在整個系統中查詢nginx檔案或目錄 find name nginx在整個目錄下查詢名稱包含nginx的檔案 find type f n...

Linux命令 find 查詢命令

help引數,查詢命令引數 find help 命令格式 find h l p olevel d help tree search stat rates opt exec path expression 這樣的說法你能看的懂嗎?反正我是看不懂。於是乎使用 man find命令,得到各引數更詳細的解釋...

linux檔案查詢find命令

1.locate 與 find命令的區別 locate命令用於查詢檔案,它比find命令的搜尋速度快,它需要乙個資料庫,這個資料庫由每天的例行工作 crontab 程式來建立。當我們建立好這個資料庫後,就可以方便地來搜尋所需檔案了。即先執行 updatedb 無論在那個目錄中均可,可以放在cront...