文件搜索之find的使用

一.find介紹:

  find是Linxu中一個十分常用的文件查找工具,其工作原理是通過遍歷啟起始路徑下文件層級結構完成的,其特點是查找速度慢,能做到實時查找和精確查找。

二.使用方法:

find  start_path search_conditions  action

1.statr_path:所要查找的文件的起始位置,默認是當前目錄

2.earch_conditions:

(1)根據文件名進行查找:

 -name filename :根據文件名進行查找,filename支持glob風格的文件名通配

 -iname filename:根據文件名進行查找,filename支持glob風格的文件名通配,不過忽略文件名中的大小寫

使用示例:查找當前目錄下以txt結尾的所有文件

find ./ -name "*.txt" -print


(2)根據文件的所屬關系進查找

-user username:查找屬主為username的文件

-group groupname:查找數組為group的文件

-uid UID:查找屬主為UID的文件

-gid GID:查找屬組為GID的文件

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

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

使用示例:查找/etc下沒有屬主的文件

find /etc -nouser -print

(3)根據文件類型進行查找

-type filetype

filetype有:

f:普通文件
b:塊設備文件
d:目錄
p:管道文件
l:鏈接文件
c:字符設備文件
s:套接字文件

使用示例:查找/etc目錄下沒有屬主的普通文件

find /etc -nouser -type f -print

(4).根據文件的大小來查找

-size {+|-}#{K,M,G},可以以K,M,G為單位進行查找

#:查找大小為#的文件

+#:查找文件大小至少為#的文件

-#:查找文件大小至多為#的文件

使用示例:查找/etc下沒有屬組,大小為至少10k的普通文件

find /etc -nogroup -size +10k -type f -print

(5)根據時間戳進行查找

-atime day:查找在day天之內被訪問過的文件

-ctime day:查找day天之內有改變的文件

-mtime day:查找day天之內有修改的文件

-amin min:查找min分鐘之內被訪問過的文件

-cmin min:查找min分鐘之內被訪問過的文件

-mmin min:查找min分鐘之內被修改過的文件

使用示例:查找/etc下一個月之內被訪問過,沒有屬主,大小為至多1M的普通文件

find /etc -atime 30 -nouser -size -1M -type f -print

(6)根據文件的權限進行查找

-perm {/|-} mode

mode:查找文件的權限為mode的文件,例如111查找屬,屬組,其他用戶都有執行權限的文件

/mode:查找任何一類用戶滿足其中任何一個權限位的文件,例如/111,查找屬主,屬組,或其他用戶之中任意一個具有執行權限的文件

-mode:查找所有用戶的所有位都滿足的文件,例如-111,查找權限小于111的文件,即每一位用戶權限都不能超過1的文件

使用示例:查找/etc下一個月之內被訪問過,大小為至多1M,屬主,屬組,或其他用戶其中之一能執行的文件

find /etc -atime 30 -size -1M -perm /111 -print

(6).組合測試

-a : 與運算邏輯,默認也是這種組合邏輯

-o:或運算邏輯

-not,!:非運算邏輯

使用示例:查找/etc中沒有屬主或者至少為1M的文件

find /etc -nouser -o -size +1M -print


(7)根據文件是否為空來查找

-empty

使用示例:查找/etc下的空文件

find /etc -empty?。穑颍椋睿?/span>

3.action:默認為打印查找到的文件名,也可以通過 -exec command {} \的方式對查找到的文件進行指定操作

-print:打印查找到的文件名,也是默認處理方式

-ls :將查找到的文件使用ls列出

-exec command {} \ :對查找到的每個文件執行command命令

當所要執行的命令要接受較長的命令參數時,要通過管道送給xargs來執行,例如 find ./ -name "*.txt|xarg?。欤蟆。臁。琛}?。?/span>

使用示例:將/etc下所有以.txt結尾的文件找到并刪除之

find /etc -name "*.txt"?。?xarg rm -f {} \ 

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

(0)
zhangbaozhangbao
上一篇 2016-11-01 22:15
下一篇 2016-11-01 23:02

相關推薦

  • 馬哥linux2014|2015全套教程

    1、本課程全程將基于集成了Openstack云環境、支持高精度時間(PTP)及虛擬化性能大大提升的RHEL 6.5或CentOS 6.6,間或介紹CentOS 7系統的使用; 2、此文章給出的只是個課程知識點框架,實際講解過程相當精細;另外,知識點講授的次序未必同此文章所標示的順序相同; 3、第15期面授班定于2015年3月24號開課;本期將會是馬哥教育數年…

    Linux干貨 2015-07-14
  • 文件權限管理

    一 、文件屬性介紹 1、linux文件權限分為讀(read)、寫(write)、執行(excute)三種,主要針對三類用戶進行定義:ouwer:屬主(u) 、group(g):屬組、 other(o):其他人。文件的權限組合可以分為兩種,一種是由三個字母r 、w、 x組成,一種是由數字組成4、2、1,它們代表的意思是r = 4 表示讀權限、w = 2表示寫權…

    Linux干貨 2016-08-08
  • shell腳本的一點補充

    腳本內容補充 數組 變量:存儲單個元素的內存空間數組:存儲多個元素的連續的內存空間,相當于多個變量的集合。 數組名和索引 索引:編號從0開始,屬于數值索引注意:索引可支持使用自定義的格式,而不僅是數值格式,即為關聯索引,bash4.0版本之后開始支持。bash的數組支持稀疏格式(索引不連續) 數組的使用 聲明數組: declare -a ARRAY_NAME…

    Linux干貨 2016-08-24
  • Corosync + Pacemaker 搭建高可用MariaDB服務

    Corosync + Pacemaker 搭建高可用MariaDB服務 實驗描述 1.本實驗的目的是為了通過手動配置corosync配置文件,實現MariaDB服務的高可用,集群心跳傳遞使用組播方式。2.三個節點的主機名分別為:node5.redhat.com、node6.redhat.com、node7.redhat.com。地址為172.16.100.5…

    Linux干貨 2016-04-06
  • haproxy 簡單實現80轉后端8000

    一,安裝 yum -y install gcc automake autoconf libtool make tar -xzf haproxy-1.6.8 cd haproxy-1.6.8 make TARGET=linux2628 make install 二,編輯配置文件 Haproxy配置中分成五部分內容,當然這些組件不是必選的,可以根據需要選擇作為配…

    Linux干貨 2016-09-19
  • 循環體

    for 變量名in 列表;do 循環體 done ?執行機制: 依次將列表中的元素賦值給“變量名”; 每次賦值后即執行一次循環體; 直到列表中的元素耗盡,循環結束 列表生成方式: (1) 直接給出列表 (2) 整數列表: (a) {start..end} (b) $(seq[start [step]] end) (3) 返回列表的命令  &nbsp…

    Linux干貨 2016-08-21
欧美性久久久久