1. 程式人生 > >Linux文件查找find和locate

Linux文件查找find和locate

expr sysconfig 3.5 用戶 實現 文件大小 some 塊設備 ont

1 locate文件查找 1

1.1 概述 1

1.2 locate文件查找的特性 1

2 文件查找概述 1

3 1

3.1 文件名查找 1

3.2 文件大小查找 1

3.3 時間戳查找 1

3.4 文件從屬關系查找 1

3.5 文件類型查找 1

3.6 權限查找 1

3.7 組合查找 1

3.8 處理動作 1

  1. locate文件查找

  2. 概述

安裝

yum install -y mlocate

locate

-c:符合條件的文件數量

-b:基名查找(按文件名稱關鍵字查找,而不是文件路徑關鍵字)

locate依賴於事先構建好的索引庫

系統自動實現(周期性)

手動更新數據庫(updatedb)

  1. locate文件查找的特性

1、查找速度快

2、模糊查找

3、不是實時更新

  1. 文件查找概述

Linux系統中的find命令在查找文件是非常有用而且方便

他可以根據不同條件來進行查找文件:例如權限,擁有者,修改時間,文件大小等等。同時find是linux下必須掌握的。

find命令的基本語法如下:

命令

選項

路徑

表達式

動作

find

[options]

[path]

[expression]

[action]

  1. 文件名查找

-name:區分大小寫

-iname:忽略大小寫

通配符:*和? *:匹配多個任意字符 ?:匹配一個任意字符

-regex:基本正則表達式模糊查找文件,匹配是整個路徑,而非其名;

區分大小寫

[root@oldboy pubilc]# find /pubilc/ -name "ifcfg-ens33"

/pubilc/ifcfg-ens33

不區分大小寫

[root@oldboy pubilc]# find /pubilc/ -iname "ifcfg-ens33"

/pubilc/ifcfg-ens33

/pubilc/IFCFG-ENS33

  1. 文件大小查找

-size[+|-] #UNIT

常用單位:k、m、g

查找大於10m的文件

[root@oldboy pubilc]# find /pubilc/ -size +10M -ls

33587283 15360 -rw-r--r-- 1 root root 15728640 8月 23 16:22 /pubilc/file3.txt

33587284 12288 -rw-r--r-- 1 root root 12582912 8月 23 16:23 /pubilc/file2.txt

查找等於10M的文件

[root@oldboy pubilc]# find /pubilc/ -size 10M -ls

33587282 10240 -rw-r--r-- 1 root root 10485760 8月 23 16:21 /pubilc/file1.txt

查找小於10M的文件

[root@oldboy pubilc]# find /pubilc/ -size -10M -ls

33587264 0 drwxr-xr-x 4 root root 111 8月 23 16:22 /pubilc/

51095307 0 drwxr-xr-x 2 root root 6 8月 23 16:11 /pubilc/ifcfg-ens33

619630 0 drwxr-xr-x 2 root root 6 8月 23 16:11 /pubilc/IFCFG-ENS33

33587281 6144 -rw-r--r-- 1 root root 6291456 8月 23 16:21 /pubilc/file.txt

  1. 時間戳查找

以"天"為單位

-atime[-|+]#

#:之前第#天的文件

-#:七天內的文件

+#:七天之前的文件

以分鐘為單位:

-amin:

-mmin

-cmin:

創建文件測試文件

[root@oldboy pubilc]# for i in {01..31};do date -s 201808$i && touch file-$i;done

查找20以前的文件

[root@oldboy pubilc]# find /pubilc/ -atime +20 -ls

33587281 0 -rw-r--r-- 1 root root 0 8月 1 00:00 /pubilc/file-01

33587282 0 -rw-r--r-- 1 root root 0 8月 2 00:00 /pubilc/file-02

33587283 0 -rw-r--r-- 1 root root 0 8月 3 00:00 /pubilc/file-03

33587284 0 -rw-r--r-- 1 root root 0 8月 4 00:00 /pubilc/file-04

查找5天以內的文件

[root@oldboy pubilc]# find /pubilc/ -atime -5 -ls

33587264 4 drwxr-xr-x 2 root root 4096 8月 31 00:00 /pubilc/

33588261 0 -rw-r--r-- 1 root root 0 8月 27 00:00 /pubilc/file-27

33588262 0 -rw-r--r-- 1 root root 0 8月 28 00:00 /pubilc/file-28

33588263 0 -rw-r--r-- 1 root root 0 8月 29 00:00 /pubilc/file-29

33588264 0 -rw-r--r-- 1 root root 0 8月 30 00:00 /pubilc/file-30

33588265 0 -rw-r--r-- 1 root root 0 8月 31 00:00 /pubilc/file-31

查找前5天,當天的文件

[root@oldboy pubilc]# find /pubilc/ -atime 5 -ls

33588260 0 -rw-r--r-- 1 root root 0 8月 26 00:00 /pubilc/file-26

  1. 文件從屬關系查找

-user:查找屬主指定用戶的所有文件;

-group:查找屬組指定組的所有文件;

-uid:查找屬主指定UID的所有文件

-gid:查找屬組指定的GID的所有文件

-nouser:查找沒有屬主的文件;

nogroup:查找沒有屬組的文件;

查找屬主是oldboy的文件

[root@oldboy pubilc]# find / -user oldboy 2>/dev/null

28341 4 -rw-rw-r-- 1 oldboy oldboy 445 8月 22 21:11 /home/oldboy/2.txt

619618 0 -rw-rw-r-- 1 oldboy oldboy 0 8月 22 21:21 /home/oldboy/ab

451578 4 -rw-rw-r-- 1 oldboy oldboy 93 8月 22 21:32 /home/oldboy/ping.sh

451575 4 -rw------- 1 oldboy oldboy 2427 8月 22 21:32 /home/oldboy/.viminfo

查找屬組是oldboy的文件

[root@oldboy pubilc]# find / -group oldboy -ls

28318 12 -rw------- 1 oldboy oldboy 12288 8月 22 10:01 /home/oldboy/.123.swp

28319 0 -rw-rw-r-- 1 oldboy oldboy 0 8月 22 21:21 /home/oldboy/1.txt

28341 4 -rw-rw-r-- 1 oldboy oldboy 445 8月 22 21:11 /home/oldboy/2.txt

查找UID是的文件

[root@oldboy pubilc]# find / -uid 1000 -ls 2>/dev/null

25716 4 -rw-r--r-- 1 oldboy oldboy 231 4月 11 08:53 /home/oldboy/.bashrc

25719 4 -rw------- 1 oldboy oldboy 1115 8月 22 21:50 /home/oldboy/.bash_histo

查找GID是的文件

[root@oldboy pubilc]# find / -gid 1000 -ls 2>/dev/null

25714 4 -rw-r--r-- 1 oldboy oldboy 18 4月 11 08:53 /home/oldboy/.bash_logout

25715 4 -rw-r--r-- 1 oldboy oldboy 193 4月 11 08:53 /home/oldboy/.bash_profi

查找沒有屬主的文件

[root@oldboy pubilc]# find / -nouser 2>/dev/null -ls

619630 0 -rw-rw---- 1 1002 mail 0 8月 31 00:08 /var/spool/mail/aaa

17563463 0 drwx------ 2 1002 1002 62 8月 31 00:08 /home/aaa

17563476 4 -rw-r--r-- 1 1002 1002 18 4月 11 08:53 /home/aaa/.bash_logout

17563511 4 -rw-r--r-- 1 1002 1002 193 4月 11 08:53 /home/aaa/.bash_profile

17563512 4 -rw-r--r-- 1 1002 1002 231 4月 11 08:53 /home/aaa/.bashrc

33587290 0 -rw-r--r-- 1 1002 1002 0 8月 10 00:00 /pubilc/file-10

33574983 0 -rw-r--r-- 1 1002 1002 0 8月 16 00:00 /pubilc/file-16

查找沒有屬組的文件

[root@oldboy pubilc]# find / -nogroup 2>/dev/null -ls

17563463 0 drwx------ 2 1002 1002 62 8月 31 00:08 /home/aaa

17563476 4 -rw-r--r-- 1 1002 1002 18 4月 11 08:53 /home/aaa/.bash_logout

17563511 4 -rw-r--r-- 1 1002 1002 193 4月 11 08:53 /home/aaa/.bash_profile

17563512 4 -rw-r--r-- 1 1002 1002 231 4月 11 08:53 /home/aaa/.bashrc

33587290 0 -rw-r--r-- 1 1002 1002 0 8月 10 00:00 /pubilc/file-10

33574983 0 -rw-r--r-- 1 1002 1002 0 8月 16 00:00 /pubilc/file-16

  1. 文件類型查找

-type

f:普通文件

d:目錄文件

l:鏈接文件

c:字符設備文件

p:管道文件

b:塊設備文件

普通文件

find /public -type f

目錄

find /public -type d

鏈接文件

find /public -type l

管道文件

find /run -type p

塊設備

find /dev -type b

字符設備

find /dev -type c

套接字文件

find /dev -type s

  1. 權限查找

-perm [/|-] mode

mode:精確權限匹配;

/mode:任何一類用戶(g、u、o)的權限中的任何一位(r、w、x)符合條件即滿足;

9位權限位之間存在"或"關系;

-mode:每一類用戶(g、u、o)的權限中的每一位(r、w、x)同時符合條件即滿足;

9位權限位之間存在"與"關系;

完全匹配444權限

擁有者至少有r— 組至少有r—其他人至少有r--

[root@oldboy pubilc]# find /pubilc/ -perm -444 -ls

  1. 組合查找

與:-a(默認)

或:-o

非:-not,!

!A -a !B = !(A -o B)

!A -o !B = !(A -a B)

在/public目錄下查找屬於屬於oldboy用戶並且屬於oldgirl組的文件

[root@oldboy pubilc]# find /pubilc/ -user oldboy -a -group oldgirl -ls

33587284 0 -rw-r--r-- 1 oldboy oldgirl 0 8月 4 00:00 /pubilc/file-04

33587285 0 -rw-r--r-- 1 oldboy oldgirl 0 8月 5 00:00 /pubilc/file-05

33587286 0 -rw-r--r-- 1 oldboy oldgirl 0 8月 6 00:00 /pubilc/file-06

33587287 0 -rw-r--r-- 1 oldboy oldgirl 0 8月 7 00:00 /pubilc/file-07

在/public目錄下查找屬於oldboy或者屬於oldgirl的文件

[root@oldboy pubilc]# find /pubilc/ -user oldboy -o -user oldgirl -ls

33587288 0 -rw-r--r-- 1 oldgirl oldboy 0 8月 8 00:00 /pubilc/file-08

  1. 處理動作

當查找到一個文件後,需要對文件進行處理

-print:輸出到標準輸出,默認的動作;

-ls:類似於對查找的文件執行"ls -l"命令,輸出文件的詳細信息;

-delete:刪除查找到的文件;

-fls:/PATH/TO/SOMETILE:把查找到的所有文件的長格式信息保存至指定文件中;

-ok COMMAND {} \; :對查找的每個文件執行有COMMAND表示的 命令,每次操作都由用戶進行確認;

-exec COMMAND {} \; :對查找的每個文件執行由COMMAND表示的命令,不需要確認;

打印查詢到的文件

[root@oldboy pubilc]# find /pubilc/ -name "file-*"

/pubilc/file-01

/pubilc/file-02

/pubilc/file-03

[root@oldboy pubilc]# find /pubilc/ -name "file-*" -print

/pubilc/file-01

/pubilc/file-02

/pubilc/file-03

拷貝文件

[root@oldboy pubilc]# find /etc/sysconfig/ -name "ifcfg-ens33" -exec cp {} ./ \;

[root@oldboy pubilc]# find /etc/sysconfig/ -name "*ens33" -ok cp {} ./ \;

< cp ... /etc/sysconfig/network-scripts/ifcfg-ens33 > ? y

刪除文件

[root@oldboy pubilc]# find /pubilc/ -name "file-01" -exec rm {} \;

本地文件保留最近7天的備份,備份服務器保留3個月

[root@oldboy pubilc]# find /pubilc/ -mtime +7 -delete

[root@oldboy pubilc]# find /pubilc/ -mtime +30 -delete

Linux文件查找find和locate