文件搜索者-find命令詳解

1. 文件查找:

         在linux系統中由于文件的眾多,往往需要在眾多的文件當中查找某一個文件,如果時間一長,很難記得文件存放至何處,不過,這一點,你不比擔心,因為開發人員為我們提供了強大的文件搜索工具,下面將介紹兩款常用的文件查找工具locate,和find,這兩款查找工具只能是從文件系統中查找不能在內存當中查找,因為內存是沒有文件系統的。

2. locate命令:

  locate命令是基于數據庫來查找文件的,命令查找速度快,一般查找跟新比較慢慢,對于名字變化少的,如:配置文件,可以用locate查找,因為數據庫需要更新,所以就會有一點延遲,locate命令一般是每天更新一次數據庫,所以有可能最新創建的文件找不到,或者剛剛刪除的文件任在數據庫當中??梢允褂胾pdatedb更新數據庫信息,數據庫文件:/var/lib/mlocate/mlocate.db

    locate 用法:

locate 選項 參數

選項:

-e 排除在尋找范圍之外。

-q 安靜模式,不顯示任何錯誤信息

-n 最多顯示#個輸出

-r 支持正則表達式

-i 忽略大小寫

-b 基名

示例:

[root@cnode6_8 etc]# locate -r '\<functions$' -n 3 //使用正則表達式匹配搜索結果的前三行
/etc/rc.d/init.d/functions
/etc/sysconfig/network-scripts/network-functions
/lib/lsb/init-functions

3. find命令

  用來在指定目錄下查找文件。功能十分強大,可以根據各種條件進行查找,如果使用該命令時,不設置任何參數,則find命令將在當前目錄下查找子目錄與文件。并且將查找到的子目錄和文件全部進行顯示。

語法:

  find 選項 查找路徑 查找條件 處理動作

選項:

根據文件名和iNode查找:

-name 支持使用通配符* ? [] [^] 根據文件名查找

-iname 不區分大小寫的根據文件名查找

-inum # 根據#指定的iNode號查找

-samefile 相同iNode號相同的文件,也就是硬鏈接

-link # 鏈接數為#的文件

-regex 使用正則表達式匹配文件

根據文件屬組和屬主查找:

-user 根據屬組為指定用戶UID查找文件

-grop 查找屬組問指定組的文件

-gid根據gid號碼查找文件

-nouser查找沒有屬主的文件

-nogrop查找沒有屬組的文件

根據文件類型:

-type

f 普通文件

d 目錄文件

l 符號鏈接文件

s 套接字文件

b 塊設備文件

c 字符設備文件

p 管道文件

組合條件:

-a 與

-o 或

-not !非

根據文件大小查找:可以查找指定范圍大?。◣挝籯,M,G)的文件

-size [+|-]#unit

# unit (#-1,#] 區間前開后閉

-#unit [0.#-1]

+#unit (#,)

根據時間戳查找:可以以天或分鐘為單位

[+|-]#參數意義:#:[#,#+1],+#:[#+1,], -# [0,#)

-atime 訪問時間

-mtime 修改時間

-ctime 改變時間

以分鐘為單位的三種時間

-amin

-mmin

-cmin

根據權限查找:-perm [/-] mode

mode 精確權限匹配

/mode 每一位只要有一類匹配的就行

-mode 每一類必須同時擁有mode指定的權限

0 表示不關注,權限隨意


查找完成的處理動作:

-ls 類似于ls –l 命令可以顯示文件詳細列表

-delete 刪除查找到的文件

-fls 查找到的文件都以長格式形式保存在文件當中

-ok command {} \;對查找到的文件執行command之前都會交互式的詢問用戶

-exec command {} \;類似于上一個命令,不需要交互,直接默認執行

排除查找的目錄:

-prune(修減)不包含的文件或目錄

補充:

  關于時間大小方面參數數字的意義和示例:如查找文件大小為12k,表示查找的文件是大于等于11k,小于12k,是指定的值減1得到的,+6k表示查找文件7k(大于6k)到正無窮

-6k表示0到5k(包含5k,小于6k)的文件

4. 查找示例:

1、查找/var目錄下屬主為root,且屬組為mail的所有文件

[root@centos7 ~]# find /var/ -user root -group mail -ls
201334650    0 drwxrwxr-x   2 root     mail  50 Aug 13 12:54 /var/spool/mail
205749525    0 -rw-------   1 root     mail  0 Aug 13 12:54 /var/spool/mail/root

2、查找/var目錄下不屬于root、lp、gdm的所有文件

[root@centos7 ~]# find /var/    -not \( -user root -o -user lp -o -user gdm \)

3、查找/var目錄下最近一周內其內容修改過,同時屬主不為root,也不是postfix的文件

[root@centos7 ~]# find /var/ -mtime -7 -not \(  -user root -o -user postfix  \)  //注意括號兩側空格

4、查找當前系統上沒有屬主或屬組,且最近一個周內曾被訪問過的文件

[root@centos7 ~]# find / -nouser -nogroup -atime -7

5、查找/etc目錄下大于1M且類型為普通文件的所有文件

[root@centos7 ~]# find /etc/ -size +1M -type -f
find: Arguments to -type should contain only one letter
[root@centos7 ~]# find /etc/ -size +1M -type f
/etc/selinux/targeted/policy/policy.29
/etc/udev/hwdb.bin
/etc/brltty/zh-tw.ctb

6、查找/etc目錄下所有用戶都沒有寫權限的文件

[root@centos7 ~]# find /etc/ -not -perm /222 –ls

7、查找/etc目錄下至少有一類用戶沒有執行權限的文件

[root@centos7 ~]# find /etc/ -perm -111 -ls

8、查找/etc/init.d目錄下,所有用戶都有執行權限,且其它用戶有寫權限的文件

 [root@centos7 ~]# find /etc/init.d/ -perm -113
/etc/init.d/test

附:德·摩根定律

(P Q) = (P) (Q)

(P Q) = (P) (Q令

原創文章,作者:jack_cui,如若轉載,請注明出處:http://www.www58058.com/35952

(0)
jack_cuijack_cui
上一篇 2016-08-15 16:39
下一篇 2016-08-15 16:55

相關推薦

  • linux-系統自動化安裝

    一、安裝程序及配置 CentOS 系統安裝 系統啟動流程: bootloader–>kernel(initramfs)–>rootfs–>/sbin/init anaconda: 系統安裝程序 tui:  基于圖形庫curses 的文本 窗口 gui :圖形窗口 安裝程序啟動過程 MB…

    Linux干貨 2016-09-26
  • N25-第19周博客作業

    1、描述Tomcat的架構; 2、詳細解釋Tomcat的配置文件及配置文件中的參數所代表的含義; 3、配置apache通過mod_proxy模塊與Tomcat連接的詳細過程; 4、配置基于mod_jk的負載均衡; 5、配置tomcat集群,能夠實現用戶的session會話保持。 1、描述Tomcat的架構; Tomcat組件,分為4類: 頂層類組件:包括&l…

    2017-05-21
  • DNS和BIND配置(第二部分)

    接第一部分課后練習 三、課后練習: 2、配置反向解析: 步驟一:寫主配置文件:改成與上個實驗相同,也可以自己寫一個簡單的配置文件,如下: [root@localhost tmp]# cat named.conf.new options { directory  "/var/named&qu…

    Linux干貨 2016-10-17
  • 文件共享服務之NFS

    文件共享服務之NFS 文件共享服務之NFS 一、什么是NFS及NFS的工作流程 二、NFS發展及問題 三、NFS簡單部署 一、什么是NFS及NFS的工作流程 NFS(Network File System,網絡文件系統)  NFS是借助于RPC來實現功能的 RPC:(Remote  Procedure  Call  p…

    Linux干貨 2016-04-19
  • 馬哥教育網絡班22期+第1周課程練習

    1.描述計算機的組成及其功能。    組成:CPU (運算器+控制器),存諸器(內存與硬盤),輸入設備,輸出設備。    運算器:對數據進行加工處理的部件(包括算述運算與邏輯運算)。    控制器:負責從存儲器取出指令,按指令的要求發出控制信號,使各部件協調的,一步步的完成各種操作。   …

    Linux干貨 2016-08-22
  • N24 第6周作業

    請詳細總結vim編輯器的使用并完成以下練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; 2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白字符; 3、刪除/tmp/rc.sysinit文件…

    Linux干貨 2016-11-30

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-19 10:49

    find命令是我們實現文件查找的重要工具,同時,他的處理動作也是很重要的,這也是需要多加練習的呢。

欧美性久久久久