文件查找

locate 和 find

在文件系統中查找符合條件的文件

locate :非實時查找(數據庫查找)

語法 :locate? +? 文件名? 直接查找

按照查詢系統上預建的文件索引數據庫

/var/lib/mlocate/mlocate.db? ? (每天開機以后自動生成,剛裝的系統就找不到)

[XJ3698}3GSPT{[95YDR_FI

特點: 查找速度快? ? ? ? 模糊查找? ? ? ?非實時查找? ? ? 搜索的是文件的全路徑,不僅僅是文件名

可能只搜索用戶具備讀取和執行權限的目錄

locate 的命令選項: -i? ? ? ? ?:不區分大小寫

-n? N? :? ?只列舉前N個

-r? ? ? ? :? ?可以使用正則表達式

查找文件 locate? ?f1.sh

J8CNY}[L1B@F{~0}(RLXOLI

locate? ?/data? ?-i? ?f1.sh

(@SMDV31TXN{8W{0WCX9(6P

locate? -n5? ?f1.sh? ? ?顯示出前面5行

F55`%)H~JZM05`{6`G0VA[B

locate -r “^/usr/.*\.lua$”? ? ??在/data 目錄下 尋找以/usr 開頭 以.lua結尾

AUM7M@RI1`RLTHZX$J%K7$6

 

find : 實時查找工具,通過遍歷指定路徑完成文件查找

工作特點: 查找速度略慢? ? ? ? 精確查找? ? ? 實時查找? ? ? ? ?可能只搜索用戶具備讀取和執行權限的目錄

語法 : find 【OPTION】……[查找路徑]【查找條件】【處理動作】

查找路徑:指定具體目標路徑;默認為當前目錄

查找條件:指定的查找標準,可以文件名、大小、類型、權限等標準進行;默認為找出指定路徑? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 下的所有路徑

處理動作:對符合條件的文件做操作,默認輸出至屏幕

查找條件

指搜索層級? ?-maxdepth? ? level 最大搜索目錄深度,指定目錄為第一級

-mindepth? ? ?level 最小搜索目錄深度

根據文件名或inode查找:

-name”文件名稱”:支持使用glob

*, ?, [], [^]

-iname“文件名稱”:不區分字母大小寫

-inum n 按inode號查找

-samefile name 相同inode號的文件

-links n 鏈接數為n的

-regex “PATTERN”:以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱

find /etc/ -maxdepth 2 -name passwd? ? 取/etc/ 下 含有passwd的最少第2層目錄

_39N0TYKD{~%OZQ$8MQSFFS

find /etc/? -maxdepth 2 -mindepth? 2 -name passwd? 取/etc/ 最少2層 最多2層 含有passwd的目錄

F~A4SXCGX[$OTUWIO7X3~5V

ll -ia? 可以看到文件的節點編號

ARW]ZG6[KAPVA2ZD48F$VAN

find? /data? inum 68? ?取 /data 下文件? 68的節點編號

K5UG$(9F~0OR{$@]`Z{_FS7

find /data -samefile lg.out? -ls? ?取 /data 目錄下和lg.out相同的節點編號

0F6HVDZQZ][0WEQLDI5HO]W

find /etc/ -regex “.*\.conf$”? ?用正則表達式取/etc/下的 以.conf結尾的文件

H%A)PLEYMN{43SGNMONEODO

根據屬主,屬主查找:

user USERNAME : 查找屬主為制定用戶的(UID)的文件

-group GRPNAME: 查找屬組為指定組(GID)的文件

find? ?/home? -user? heihei? -ls? ?查找在/home 下 用戶為heihei 的文件屬性

EYY60KUKHMREAEE8@}PL5MH

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

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

find? /home? -nouser? ?查找/home下沒有所屬主的文件

LW)F70674NVXL@QF]$9F}VF

find /home -nouser -a -nogroup -ls 查找/home下即沒有所屬主有沒有所屬組的文件

G]{`~%A[7]3OFGH{Z_S)07L

find /home -nouser -o -nogroup

9_LN0KFM)7BZIF_`YN2H$FX

根據文件類型查找

-type :? ? ? ? f? :普通文件? ? ?d:目錄文件? ? l :符號鏈接文件? s: 套接字文件? ? b: 塊設備文件

c: 字符設備文件? ? p : 管道文件

空文件或目錄

-empty

find /etc/ -empty -type f? ?查找/etc/ 普通空文件目錄

`FKA7`KV@~]1K0[T2ZUEHUK

-not? ,? ?!

find? /data ! -empty? -type f? ?查找/data目錄下非空的普通文件

(HDOYV[)ITY7_185OOGV@48

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

find /tmp \( -not -user root -a -not -name ‘f*’ \) -ls
find /tmp -not \( -user root -o -name ‘f*’ \) –ls

2LXD6[(][_J(7IHT}J_3~3I

根據文件的大小來查找

-size? [+|-] # UNIT? 常用單位 :k, M ,G , c (byte)

#UNIT: (#-1, #]
如:6k 表示(5k,6k]
-#UNIT:[0,#-1]
如:-6k 表示[0,5k]
+#UNIT:(#,∞)
如:+6k 表示(6k,∞)

DZ`9J~8WZNRMP}HE3_K4E]5

如果SIZE 后面 跟數字 # 大小的話搜索出的數字是(數字#-1 ~ 到數字#)

如果size 后面跟數字 -#? 的大小的話搜索出的數字是【0 ~ -1】

如果size后面跟數字 +# 的大小的話搜索出的數字是(數字# ~ 無窮大)

根據事件戳 以天為單位

-atime [+|-]#,
#: [#,#+1)
+#: [#+1,∞]
-#: [0,#)
-mtime
-ctime
以“分鐘”為單位:
-amin
-mmin
-cmin

如果-atime 后面跟 # 【# ~ #+1)

如果-atime后面跟 -#【0 ~ # )

如果-atime后面跟+#【#+1 ~ 無窮大】

%)V]F7PIXOA_OYVH%WU2}NW

查看文件的時間用? ?stat? 文件名

根據權限查找

-perm? [-|/] MODE

MODE: 精確權限匹配

/MODE:任何一類(u,g,o)對象的權限中只要能一位匹配即可,或關系,+ 從centos7開始淘汰

-MODE:每一類對象都必須同時擁有指定權限

find /data -perm 644? -ls? ? ?查找在/data目錄下權限為644的文件

9QE8IZVVQ3M_M__D_RZ${MP

find /data -perm? /644? -ls? 查找在/data目錄下只要有權限符合644中的任意一個都可以顯示出來IMMH~2SUS[EHFS)DNZ}0~BQfind /data -perm -644? -ls? 查找在/data目錄下權限為644以上的文件60QOISYX_~TFJM4XFYXX7$Q

文件的處理動作

-ok COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令,對于每個文件執行命令之前,都會交互式要求用戶確認

-exec COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令

{}: 用于引用查找到的文件名稱自身

ind傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性傳遞給后面的命令

find? /data? -name? “f*”? -exec mv {}? {}.bak2.org? \;? ?把/data 目錄下帶 f 的文件移動到 /data 目錄下并改名為以.bak2.org 結尾的文件

PB}[C5EF8UW`NH8V{$L5634

在 find 中帶有-ok? ?-exec? 必須以? ? \;? 作為結束命令

 

 

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/96997

(0)
祝韻杰-桃子祝韻杰-桃子
上一篇 2018-04-24 18:01
下一篇 2018-04-25 09:20

相關推薦

  • 統計linux入門到shell腳本之間的基礎練習題。

    答案都由本人奇特思路所創,如有錯誤,請在下面評論,好及時改正!

    Linux筆記 2018-04-15
  • 使用until和while分別實現

    使用until和while分別實現192.168.0.0/24
    網段內,地址是否能夠ping通,弱ping通則輸出”success!”,若ping不通則輸出”fail!”

    Linux筆記 2018-06-15
  • Linux系統原理淺談

    CPU   CPU和各個存儲器   寄存器:接近于CPU的工作頻率,是CPU的本地存儲器,位于運算器和控制器中,在進程的切換時,寄存器會被清空 一級緩存:比寄存器稍慢,頻率同樣接近于CPU,只能用于緩存數據,不能像寄存器一樣修改數據,各個核心都有自己的私有一級緩存,進程切換時不被清空 二級緩存:比一級緩存慢,多個核心都有自己私有的二級緩存…

    Linux筆記 2018-04-01
  • joke

    后續進行修改

    Linux筆記 2018-04-08
  • 軟、硬鏈接的對比分析

      硬鏈接與軟鏈接的對比分析 硬鏈接,即一個文件可以用同一個節點編號卻使用多個文件名。這數個文件名之間是平等的關系。 例:我在centos6.9的虛擬機上創建了一個文件f1(touch f1),然后以f1文件為舊文件建立一個名為f1.1的硬鏈接,再以文件f1.1創建一個名為f1.2的硬鏈接。接著我在f1文件中寫入內容,如下圖所示,三個文件中內容是一…

    2018-04-07
欧美性久久久久