1. 程式人生 > 實用技巧 >10 Linux檔案查詢

10 Linux檔案查詢

1.find查詢概述

為什麼要有檔案查詢,因為很多時候我們可能會忘了某個檔案所在的位置,此時就需要通過find來查詢。find命令可以根據不同的條件來進行查詢檔案,例如:檔名稱、檔案大小、檔案修改時間、屬主屬組、許可權、等等方式。同時find命令是Linux下必須掌握的。

*find 命令的基本語法如下*

命令 路徑 選項 表示式 動作
find [path…] [options] [expression] [action]
查詢 地區 妹紙 18-25歲 約?

2.find查詢示例

*以下列出所有find常用的選項*

1.find名稱查詢

#1.建立檔案
touch /etc/sysconfig/network-scripts/{ifcfg-eth1,IFCFG-ETH1}

#2.查詢/etc目錄下包含ifcfg-eth0名稱的檔案
[root@lqz ~]# find /etc -name "ifcfg-eth1"

#3.-i 忽略大小寫
[root@lqz ~]# find /etc -iname "ifcfg-eth1"
#查詢/etc目錄下包含ifcfg-eth名稱所有檔案
[root@lqz ~]# find /etc/ -name "ifcfg-eth*"
[root@lqz ~]# find /etc -iname "ifcfg-eth*"

2.find大小查詢

#1.查詢大於5M的檔案
[root@lqz ~]# find /etc -size +5M

#2.查詢等於5M的檔案
[root@lqz ~]# find /etc -size 5M

#3.查詢小於5M的檔案
[root@lqz ~]# find /etc -size -5M

3.find型別查詢

# f 檔案
[root@lqz ~]# find /dev -type f
# d 目錄
[root@lqz ~]# find /dev -type d
# l 連結
[root@lqz ~]# find /dev -type l
# b 塊裝置
[root@lqz ~]# find /dev -type b
# c 字元裝置
[root@lqz ~]# find /dev -type c
# s 套接字
[root@lqz ~]# find /dev -type s
# p 管道檔案
[root@lqz ~]# find /dev -type p

4.find時間查詢

#1.建立測試檔案(後期shell會講)
[root@lqz ~]# for i in {01..28};do date -s  201904$i && touch file-$i;done

#2.查詢7天以前的檔案(不會列印當天的檔案)
[root@lqz ~]# find ./ -iname "file-*" -mtime +7

#3.查詢最近7天的檔案,不建議使用(會列印當天的檔案)
[root@lqz ~]# find ./ -iname "file-*" -mtime -7

#4.查詢第7天檔案(不會列印當天的檔案)
[root@lqz ~]# find ./ -iname "file-*" -mtime 7

#5.本地檔案保留最近7天的備份檔案, 備份伺服器保留3個月的備份檔案(實際使用方案)
find /backup/ -iname "*.bak" -mtime +7 -delete
find /backup/ -iname "*.bak" -mtime +90 -delete

5.find使用者查詢

#查詢屬主是jack
[root@lqz ~]# find /home -user jack
#查詢屬組是admin
[root@lqz ~]# find /home -group admin
#查詢屬主是jack, 屬組是admin
[root@lqz ~]# find /home -user jack -group admin
#查詢屬主是jack, 並且屬組是admin
[root@lqz ~]# find /home -user jack -a -group admin
#查詢屬主是jack, 或者屬組是admin
[root@lqz ~]# find /home -user jack -o -group admin
#查詢沒有屬主
[root@lqz ~]# find /home -nouser
#查詢沒有屬組
[root@lqz ~]# find /home -nogroup
#查詢沒有屬主或屬組
[root@lqz ~]# find /home -nouser -o -nogroup

6.find許可權查詢

#精切匹配644許可權
[root@lqz ~]# find . -perm 644 -ls

#包含444許可權即可
[root@lqz ~]# find . -perm -444  -ls
#查詢全域性可寫(每位許可權必須包含w)
[root@lqz ~]# find . -perm -222 -ls
#包含set uid
[root@lqz ~]# find  /usr/sbin -perm -4000 -ls
#包含set gid
[root@lqz ~]# find  /usr/sbin -perm -2000 -ls
#包含sticky
[root@lqz ~]# find  /usr/sbin -perm -1000 -ls

*2.find動作處理,比如查詢到一個檔案後,需要對檔案進行如何處理, find的預設動作是 -print*

動作 含義
-print 列印查詢到的內容(預設)
-ls 以長格式顯示的方式列印查詢到的內容
-delete 刪除查詢到的檔案(僅能刪除空目錄)
-ok 後面跟自定義 shell 命令(會提示是否操作)
-exec 後面跟自定義 shell 命令(標準寫法 -exec