說道查詢命令,第乙個想到的就是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、按照檔案型別查詢 -typef: 普通檔案
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...