shell學習之locate和find命令

linux系統中有幾個關於文件搜索的命令,例如:locate,wheris以及find在工做中比較經常使用到。.node

1.locate命令:locate查找文件是基於/var/lib/mlocate數據庫,該數據庫包含全部的本地文件信息,Linux系統自動建立這個數據庫,而且天天自動更新一次。本地剛建立一個文件,但使用locate命令搜索不到本地文件,須要使用updaetedb手動更新一下本地數據庫。linux

[root@node-2 ~]# touch helloWorld
[root@node-2 ~]# locate helloWorld 
[root@node-2 ~]# updatedb
[root@node-2 ~]# locate helloWorld 
/root/helloWorld
[root@node-2 ~]#
經常使用使用方法及參數:
locate  文件名稱                              #會匹配出本地/var/lib/mlocate數據庫中已經創建索引的包含文件名稱的全部文件。
[root@node-2 ~]# locate /etc/passwd
/etc/passwd
/etc/passwd-
[root@node-2 ~]# 

經常使用參數
-h --help                                                                                                               #顯示幫助
-V  --version                                                                                                          #顯示版本信息
-b, --basename         match only the base name of path names                     #只匹配路徑名的基本名稱
-c, --count               only print number of found entries                                    #只打印找到的條目數量
-e, --existing         only print entries for currently existing files                         #僅打印當前存在的文件的條目
-i, --ignore-case      ignore case distinctions when matching patterns             #忽略大小寫
-w, --wholename        match whole path name (default)                                  #匹配整個路徑名稱(默認)

2.find命令:find命令能夠在不通位置根據不一樣標準搜索任何文件,並支持多種方式處理搜索結果。其工做流程:(1)搜索全部用戶指定的路徑,包括全部的子目錄。(2)對於遇到的每一個文件,根據是否符合用戶指定的條件,全部符合條件的文件造成一個列表。(3)對於結果列表的文件,執行用戶指定的操做。數據庫

參數:
-name filename #表示包含指定匹配模式的文件名
-iname filename #表示包含指定匹配模式的文件名,不區分大小寫
-type #指定文件類型,f表示普通文件 ,d表示目錄,c表示塊設備,p表示管道,l表示鏈接
-user userid #匹配其全部者爲指定用戶ID的文件
-group groupid #匹配其全部者的組爲指定組ID的文件
-size size  #匹配其大小爲size的文件
-empety   #匹配空文件
-amin[-+]n #文件最後一次訪問時間,-n表示時間爲n分鐘之內,+n表示n分鐘以前,n表示恰好n分鐘
-atime [-+]n    #天
-cmin[-+]n    #文件最後一次狀態改變時間
-ctime[-+]n   #
-mmin [-+]n  #最後一次被修改時間
-mtime [-+]n 
動做:
-print #默認動做,將搜索結果寫入到標準輸出
-fprint file #將搜索結果寫入到file中
-ls #以詳細格式展現搜索結果
-fls file #將詳細格式結果寫入file
-delete #將結果文件刪除
-exec command {} \; #查找並執行命令,{}表示搜索到的文件名
-ok command {}\; #查找並執行命令,可是須要用戶確認

列子,找到3分鐘以前建立包含一個數字的文件並將其刪除。

[root@node-2 home]# ll -rst
total 8
4 drwxr-xr-x. 2 root   root   4096 Mar 21 19:34 ISO
4 drwx------. 4 xguest xguest 4096 Mar 22 01:06 xguest
0 -rw-r--r--  1 root   root      0 Apr 20 17:07 file1[a-z].1
0 -rw-r--r--  1 root   root      0 Apr 20 17:07 file2[a-z].2
0 -rw-r--r--  1 root   root      0 Apr 20 17:07 file3[a-z].3
0 -rw-r--r--  1 root   root      0 Apr 20 17:07 file5[a-z].5
0 -rw-r--r--  1 root   root      0 Apr 20 17:07 file7[a-z].7
0 -rw-r--r--  1 root   root      0 Apr 20 17:07 file6[a-z].6
0 -rw-r--r--  1 root   root      0 Apr 20 17:07 file8[a-z].8
0 -rw-r--r--  1 root   root      0 Apr 20 17:07 file9[a-z].9
0 -rw-r--r--  1 root   root      0 Apr 20 17:27 text1.txt
0 -rw-r--r--  1 root   root      0 Apr 20 17:27 text2.txt
0 -rw-r--r--  1 root   root      0 Apr 20 17:27 tex

[root@node-2 home]# find -type f -mmin +3 -iname "*[1-9]*" -exec rm -rf {} \;
[root@node-2 home]# ll -rst
total 8
4 drwx------. 4 xguest xguest 4096 Mar 22 01:06 xguest
0 -rw-r--r--  1 root   root      0 Apr 20 17:27 text1.txt
0 -rw-r--r--  1 root   root      0 Apr 20 17:27 text2.txt
0 -rw-r--r--  1 root   root      0 Apr 20 17:27 text3.txt
0 -rw-r--r--  1 root   root      0 Apr 20 17:27 text4.txt
0 -rw-r--r--  1 root   root      0 Apr 20 17:27 text5.txt
0 -rw-r--r--  1 root   root      0 Apr 20 17:27 text6.txt
0 -rw-r--r--  1 root   root      0 Apr 20 17:27 text9.txt
0 -rw-r--r--  1 root   root      0 Apr 20 17:27 text8.txt
0 -rw-r--r--  1 root   root      0 Apr 20 17:27 text7.txt
4 drwxr-xr-x. 2 root   root   4096 Apr 20 17:28 ISO
[root@node-2 home]#
相關文章
相關標籤/搜索