Linux/Unix重要find命令詳解

find(查找)主要沿着文件層次(目錄)結構依次向下遍歷,匹配符合條件的文件,能夠附帶執行相應的操做選項,默認的操做結果是打印出符合條件的文件與目錄。

主要功能以下(全部測試均在當前目錄(test)下開始匹配,搜索):html

基本用法linux

列出給定目錄(base_path)下全部的文件和子目錄:正則表達式

find base_path -print

Linux/Unix重要find命令詳解Linux/Unix重要find命令詳解

補充:根據文件名和正則表達式進行搜索,使用選項 -name或-iname(忽略大小寫):測試

find base_path -name ‘xxx’ -print

find base_path -iname ’xxx‘ -print

Linux/Unix重要find命令詳解Linux/Unix重要find命令詳解

否認參數,能夠用 !排除所指定到的模式3d

Linux/Unix重要find命令詳解Linux/Unix重要find命令詳解

此處將打印出除txt文本文件外的的全部文件。unix

基於目錄深度的搜索htm

find命令指定遍歷完全部的子目錄。使用-maxdepth和-mindefth能夠限制find命令遍歷的目錄深度,而且find命令默認不搜索符號連接,能夠用-L選項改變這種行爲。blog

Linux/Unix重要find命令詳解Linux/Unix重要find命令詳解

例如-maxdepth的參數爲1時,只匹配當前目錄下。get

Linux/Unix重要find命令詳解Linux/Unix重要find命令詳解

-mindepth的參數表明了開始進行匹配的目錄到base_path的最短距離。it

基於文件類型搜索

使用-type能夠指定搜索的文件類型,linux/unix將全部的的一切都視爲文件(文件類型有:普通文件f,目錄d,符號連接 l,字符設備c,塊設備b,套接字s,FIFO-p),使用 -type選項咱們可以對文件類型進行過濾。

Linux/Unix重要find命令詳解Linux/Unix重要find命令詳解

此處就會只匹配出特定項下的全部普通文件,和目錄。

根據文件的時間戳進行搜索

Linux/Unix文件系統中的每個文件都有三種時間戳,訪問時間(-atime),修改時間(-mtime),變化時間(-ctime),單位爲天數,用整數指定,數字前加上+,表示大於這個時間;加上-,表示小於這個天數;不加表示恰好這個天數。

Linux/Unix重要find命令詳解Linux/Unix重要find命令詳解

此處的文件是我在進行截圖以前才建立的,訪問,修改,變化時間均小於一天。

固然相應的用分鐘做爲單位就能夠用選項(-amin)(-mmin)(-cmin),以下咱們測試修改時間

Linux/Unix重要find命令詳解Linux/Unix重要find命令詳解

基於文件大小的搜索

find提供了指定文件大小的單位選項進而搜索符合大小文件的功能,這個搜索也經常會讓用戶感到很是舒服(b:塊, c:字節, w:字, k:千字節, M:兆字節, G:吉字節)。

在搜索以前咱們先用ls(list)指令來查看下當前目錄下的文件信息:

Linux/Unix重要find命令詳解Linux/Unix重要find命令詳解

信息的第五列就是各文件目錄的大小(字節),咱們經過指定匹配條件來搜索:

Linux/Unix重要find命令詳解Linux/Unix重要find命令詳解

通過測試,在開始目錄下,文件類型爲普通目錄,文件大小大於30個字節的文件就是zl.txt了

基於文件權限和全部權的匹配

-perm選項指定了find指匹配指定權限的文件,參數爲文件對應的權限碼。

咱們仍然可參考⑥中的全部文件信息的第一列,此處須要掌握必定關於文件權限的知識。以下咱們查找權限爲644的普通文件,即用戶可讀寫,組用戶可讀,其餘可讀。

Linux/Unix重要find命令詳解Linux/Unix重要find命令詳解

也能夠用選項-user,匹配指定用戶所擁有的文件,參數爲用戶名或者UID

利用find執行相應操做

好比刪除文件,使用-delete選項;刪除測試目錄下全部的.txt普通文件

Linux/Unix重要find命令詳解Linux/Unix重要find命令詳解

還能夠利用-exec選項結合其餘命令對文件進行更高效的操做,更改文件的所屬權,複製文件等,find命令使用一對花括號{}表明文件名,對於每個匹配到的文件,find命令會將{}替換成相應的文件名; 若是-exec的命令有多個參數時,須要注意結尾使用 " \; " 或者 "+",前者表示進行轉義,否則系統會覺得是find命令的結尾。

咱們將測試目錄下的全部的.txt文件由用戶lihongbo轉換到用戶litao999,咱們必須以root用戶進行此操做,chown用於更改權限:

Linux/Unix重要find命令詳解Linux/Unix重要find命令詳解

指定find跳過特定的目錄

使用-prune選項能夠跳過咱們在搜尋的的一些明顯咱們不須要的目錄

Linux/Unix重要find命令詳解Linux/Unix重要find命令詳解

跳過了./test1目錄

須要指出的是:選項出現的前後次序咱們也應該考慮到內,由於它會影響到整條命令的執行效率。

提示:本文須要掌握關於ls(list), chown(changeowner)等命令,以及關於Linux/Unix文件系統文件類型和文件權限等知識。

本文地址:https://www.linuxprobe.com/linux-unix-find.html

相關文章
相關標籤/搜索