文件搜索者-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
下一篇 2016-08-15

相關推薦

  • 使用sudo對用戶進行權限管理

    使用sudo對用戶進行權限管理 因為root用戶權限太大,一般在實際應用的時候 ,為了避免造成錯誤泛濫和找不到責任人都需要對使用服務器人員進行權限分配,除了系統管理員外,其他人禁止使用root,但可以通過sudo命令,給自己提權。同時通過日志審計進行監控操作,操作如下: 1.禁止普通用戶使用su命令到root # usermod -g wheel user0…

    Linux干貨 2017-03-26
  • man與FHS

    man:          1 使用者在shell中可以操作的指令或可執行檔     2 系統核心可呼叫的函數與工具等     3 一些常用的函數(function)與函數庫(library),大部分是C的函數庫(libc) &n…

    Linux干貨 2016-10-30
  • 第一周-2:Linux部分常用命令使用示例、查看命令行工具使用手冊以及LinuxFHS部分目錄簡介

    一、部分命令使用示例: 1、ifconfg 在命令行界面下或系統配置腳本中用于配置、控制及查詢TCP/IP網絡接口的系統管理工具 [netartisan@localhost 桌面]$ ifconfig eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500 &n…

    Linux干貨 2016-11-07
  • 馬哥教育網絡班21期-第五周課程練習

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; grep ^[[:space:]] /boot/grub/grub.conf 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行; egrep "^#[[:space:]]{1,}[[:alnum:]]…

    Linux干貨 2016-08-08
  • Linux磁盤管理

     I/O Ports:I/O設備地址   一切皆文件:             poen(),read(),write(),close()   設備類型:     &nb…

    Linux干貨 2016-08-29
  • shell的基本使用

    小知識: 在bash環境中變量有各自的范圍,有些的變量無法超出自己本身的范圍,也無法更改自己, 或提升自己的能力范圍 用source命令執行腳本,會對里面的變量發生改變包括范圍 例:命令行中寫name=wang 腳本中寫name=xdg  先命令行,再腳本,最后命令行的順序依次執行 1.正常的執行腳本 ./file.sh  輸出的結果: …

    Linux干貨 2017-08-05

評論列表(1條)

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

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

欧美性久久久久