1. 程式人生 > >如何使用Unix/Linux find命令

如何使用Unix/Linux find命令

find 命令是 UNIX程式設計師的技能中功能最強大和最有用的命令之一。它通過許多強大的支援方式,讓檔案查詢顯示任務變得更加輕鬆。

find命令例項:

    1.基於 目錄/檔名稱/檔案型別 來搜尋

    在當前目錄或子目錄中查詢所有html檔案,我們可以使用:

find -name "*.html" -type f
     在/usr/bin中查詢所有sh檔案
find /usr/bin -name "*.sh" -type f

    該命令有兩個測試條件,第一個,“-name”用於檢驗搜尋過程中的每個檔名,如果你需要對大小寫敏感,可以使用“-iname”代替。第二個引數是“-type”

    它用於指定你感興  趣的檔案型別。

“f”表示我們查詢的是普通檔案,我們可以使用“d”表示目錄或使用l”或"s"表示符號連線。在find 手冊中可以看到該工具的所有選項。

find /-maxdepth 1 -name "*.html" -type f

    Tips:-maxdepth選項放在最前面

  預設情況下,find遍歷所有子目錄,但是你可以通過指定最大深度來控制這個行為。在前面的例子中,如果我們只想搜尋這兩個目錄不想搜尋下一層,你可以 新增“-maxdepth 1”到命令中。設定最大深度為0表示只檢驗命令列中的給定檔案。同樣,你可以設定最小深度,從而避免搜尋位於根目錄的檔案。

    2.基於 使用者/使用者組 來搜尋
 

    find 的另一個應用是搜尋屬於某個給定使用者的檔案,因此為了搜尋我的系統中所有屬於我的檔案,我使用以下命令:

find / -user gary
      同樣可以搜尋基於組使用者的檔案,使用“-group”引數。

    3.基於 檔案相關的時間特徵 來搜尋

    相關選項:

    分別使用“-ctime”“-atime”“-mtime”引數來指定最後建立時間,最後訪問時間和最後修改時間。(單位是"")

    如果你需要更精確地搜尋,可以使用分鐘變數“-cmin”“-amin”“-mmin”

find ./   -mtime 0          ;返回最近24小時內修改過的檔案。./代表需要查詢的資料夾
find ./ -mtime 1  返回的是前48~24小時修改過的檔案。而不是48小時以內修改過的檔案。
find -ctime -1    搜尋最近兩天建立的檔案

    注意:

    1前面的“-”表示我們是從今天向以前的日期範圍搜尋,與數字前面沒有"-"是有區別的。如果你剛犯了一個錯誤但不確定會影響到那些檔案,

    這很簡單可以使用如下查詢:find -mmin -5

    可以用以下命令檢視atimectime

    ls -lu  或者 ls -l --time=atime 顯示檔案的atime    ls -lc 或者  ls -l --time=ctime 顯示檔案的ctime

    在提供一個例子,搜尋當前目錄下前20分鐘到10分鐘修改過的檔案。

find . -mmin +9 -mmin -21

    還可以使用 "-newer","-anewer","-cnewer"引數來指定一個檔案,將其與要搜尋的檔案進行時間的比較。

        • -newer 指內容最近被修改的檔案
        • -anewer 指最近被讀取過的檔案
        • -cnewer 指狀態最近發生變化的檔案(檢視檔案狀態命令 stat filename

    例如,查詢在sum.java 之後修改的檔案

find -newer "sum.java"

    4.基於 檔案的大小 來搜尋

    例如我們知道一個Linux檔案大小為1,500 bytes,那麼我們可是使用如下命令來查詢

find . -size 1500c

    字元 c 表明這個要查詢的檔案的大小是以bytes為單位。如果我們連這個檔案的具體大小都不知道,那麼在Linux中還可以進行模糊查詢方式來解決。例如我們輸 入

find . -size +10000000c
    這個命令,則標明我們指定系統在根目錄中查找出大於10000000位元組的檔案並顯示出來。命令中的是表示要求系統只列出大於指定大小的檔案,

   而使 用“-”則表示要求系統列出小於指定大小的檔案。

    還有很多例子,
    搜尋大小為10M的檔案

find . -size 10M

    搜尋大於10M的檔案

find . -size +10M

    找到小於10M的檔案

find . -size -10M

    要列出所有長度為零的檔案,請使用下面的命令:

find . -empty - exec ls {} \

    在查詢到空檔案之後,您可以選擇用 rm 命令來代替ls 命令,以刪除這些檔案。

    5. 基於 檔案的許可權 來搜尋

    查詢當前目錄下所有檔案許可權為755的檔案

find . -perm 755 -print

    6.使用混合查詢方式查詢檔案

    find命令可以使用混合查詢的方法,例如我們想在/tmp目錄中查詢大於100000000位元組並且在48小時內修改的某個檔案,我們可以使用-and來把兩個查詢選項鍊接

  起來組合成一個混合的查詢方式。

find /tmp -size +10000000c -and -mtime +2

    如何搜尋修蓋時間介於f1f2各自的修改時間之間的檔案?

find . -newer f1 -and ! -newer f2      //f1的修改時間應早於f2的修改時間

   學習過計算機語言的朋友都知道,在計算機語言裡,使用and ,or 分別表示的關係。在Linux系統的查詢命令中一樣通用。
  還有這樣的例子,

find / -user fred -or -user george

  我們可以解釋為在/tmp目錄中查詢屬於fred或者george這兩個使用者的檔案。
  在find命令中還可以使用的關係來查詢檔案,如果我們要在/tmp目錄中查詢所有不屬於panda的檔案,使用一個簡單的

find /tmp ! -user panda

    更好的利用find

    7.快速執行上一次的find命令而不用重複輸入引數

!find

    事實上,"!"可以用在任何unix/linux命令的前面,以執行上一條同種型別的命令。

    8.改變顯示結果

    find對檔案執行的標準行為是顯示出檔名,這就是為什麼如果你跟蹤結果,就會看到一系列檔名的原因。如果你想使用這些結果作為另外一個過濾器的輸入的話,

   這將會十分有用。但是如果你需要結果的更多資訊,你可以令find輸出與ls –l同樣的結果:

find -user gary -iname "*.html" -ls

    這個命令將會返回檔案許可權和時間資訊。

    9.將搜尋結果作為程式的輸入

    可以通過使用“-exec”引數,來讓find命令對每個搜尋結果執行任何程式。

    如果要刪除當前目錄中所有副檔名為“.tmp”的檔案。

find -name ".tmp" -exec rm {} \ ;      //注意結尾分號

    上面兩個大括號將會被相應的檔名代替,反斜槓用來告訴find何時命令結束。

    find常和chmod結合使用快速改變大量檔案的檔案許可權,或者和grepsed結合使用來選擇性的搜尋或使用正則表示式修改文字。使用它作為一個指令碼的輸入,

   你可以讓費 時的任務自動完成,例如清除一年內沒有訪問的檔案,或者自動備份修改的檔案。

    10.查詢並顯示檔案的方法

  查詢到某個檔案是我們的目的,我們更想知道查詢到的檔案的詳細資訊和屬性,如果我們採取現查詢檔案,在使用LS命令來檢視檔案資訊是相當繁瑣的,

    現在我們也可以把這兩個命令結合起來使用。

find / -name "httpd.conf" -ls

  系統查詢到httpd.conf檔案後立即在螢幕上顯示httpd.conf檔案資訊。
  12063 34 -rw-r--r-- 1 root root 33545 Dec 30 15:36 /etc/httpd/conf/httpd.conf

  下面的表格就是一些常用的查詢檔案並顯示檔案資訊的引數和使用方法

選項

用途描述

-exec command

查詢並執行命令

-fprint file

列印檔案完整檔名

-fprint0 file

列印檔案完整檔名包括空的檔案

-fprintf file format

列印檔案格式

-ok command

給使用者命令執行操作,根據使用者的Y確認輸入執行

-printf format

列印檔案格式

-ls

列印同種檔案格式的檔案

    參考:

   [1].linux/unix中如何用find命令詳解

    http://www.tongcx.com/node/86

    [2].使用 UNIX find 命令的高階技術

    http://www.ibm.com/developerworks/cn/aix/library/es-unix-find.html

    [3].10 Example of find command in Unix and Linux (find命令的基本用法以及高階技巧都有介紹)

http://javarevisited.blogspot.com/2011/03/10-find-command-in-unix-examples-basic.html

    [4].Top 10 examples of find command in unix and linux

http://www.cloudhadoop.com/2012/02/top-10-examples-of-find-command-in-unix.html

    [5].Find Command in Unix and Linux Examples (極豐富的關於find命令的例子)

http://www.folkstalk.com/2011/12/101-examples-of-using-find-command-in.html

    [6].A Unix/Linux “find” Command Tutorial (實用的,短小精悍的教程)

相關推薦

如何使用Unix/Linux find命令

find 命令是 UNIX程式設計師的技能中功能最強大和最有用的命令之一。它通過許多強大的支援方式,讓檔案查詢顯示任務變得更加輕鬆。 find命令例項:     1.基於 目錄/檔名稱/檔案型別 來搜尋     在當前目錄或子目錄中查詢所有html檔案,我們可以使用: f

linux find命令格式及find命令詳解

/tmp 限制 have 是否 內核 時間 希望 and 獲取參數   本文詳細介紹了linux find命令格式及find命令案例,希望對您的學習有所幫助。1、find命令的一般形式為;find pathname -options [-print -exec -ok .

linux find命令用法 linux學習心得體會

txt linux ali 學習心得 訪問 lin atime str 輸出 find命令用來在指定目錄下查找文件的命令,和locate不同,find命令是實時精確查找,不做模糊匹配,但是可以使用通配符查找,相對更精確。任何位於參數之前的字符串都將被視為欲查找的目錄名。如果

linux find命令

linux find 參數 以下內容為視頻課程的補充內容,要了解更多linux命令,可以通過以下鏈接學習:http://edu.51cto.com/course/13070.html通過文件名查找法:   這個方法說起來就和在WINDOWS下查找文件一樣容易理解了。如果你把這個文件放在單個的文件夾

unix/Linux常用命令英文全稱

man: Manual   意思是手冊,可以用這個命令查詢其他命令的用法。 pwd:Print working directory   顯示當前工作路徑。 su:Swith user  切換使用者,切換到root使用者 cd:Change

LINUX----find 命令

1.如圖在/mnt/下建立了5個檔案並更改了其中的一些組,使用者,其他等     2.find /mnt/  -user root  尋找/mnt/ 下使用者是root 的   3.find /mnt -group s

Linux find 命令詳解

簡介:     在 Linux 中 find 是一個強大的檔案查詢工具, 可以用於查詢系統或指定目錄的指定檔案, find 支援正則表示式和統配符進行匹配   find 命令格式: # 使用格式 find [-H] [-L] [-P] [-D debugopts]

Unix/Linux常用命令

ls-檢視檔案資訊 ls是英文單詞list的簡寫,其功能為列出目錄的內容,是使用者最常用的命令之一。 它類似於DOS下的dir命令。 ls [引數] 目錄或檔案 常用引數及含義如下表所示。 使用ls命令檢視root目錄下的檔案資訊。在命令提示符下執行如下命令,執行結果如下圖所示。

15個實用的Linux find命令示例 -maxdepth例項演示

本文將介紹15種無論是於新手還是老鳥都非常有用的Linux find命令。 首先,在你的home目錄下面建立下面的空檔案,來測試下面的find命令示例。 01 # vim create_sample_files.sh 02 touch MybashProgram.sh 03 touch m

Linux: find命令 ‘/proc/xxxx/task/xxxx/fd/y’: No such file or directory 解決辦法

問題描述: find命令查詢系統中大於50M的檔案時,有幾行報錯: No such file or directory [email protected]:~# find / -size +50M /proc/kcorefind: ‘/proc/6377/task

unix/linux who命令的實現

Understanding Unix/Linux Programming(Unix/Linux程式設計實踐教程) 學習模式: (1)它能做什麼? (2)它是如何實現的? (3)能不能自己編寫一個? (

Linux find命令根據時間篩選出檔案進行刪除

需求:刪除 /home/file/ 目錄下10天之前生成的txt型別的檔案find /home/file/  -ctime +10 -name "*.txt" -print | xargs rm -f或

Linux- find命令的例子

例項 根據檔案或者正則表示式進行匹配 列出當前目錄及子目錄下所有檔案和資料夾 find . 在/home目錄下查詢以.txt結尾的檔名 find /home -name "*.txt" 同上,但忽略大小寫 find /home -iname

linux find 命令避開某個目錄的用法prune

如果想查詢當前目錄(/home/student)下的tmp.txt檔案,但是想要避開sep目錄:  find /home/student -path /home/student/sep -prune -o -name "tmp.txt" -print  sep後面不能加/

Runtime exec 執行linux find 命令時 引號問題

環境: Distributor ID: CentOS、java linux 中使用find 命令 find /opt/test -name '*abc' 假設在這個命令在終端中可以找到 123abc 但是用java程式中  String str="find /opt/tes

Unix/Linux常用命令—磁碟管理

df命令 功能:檢查檔案系統的磁碟空間佔用情況。可以利用該命令來獲取硬碟被佔用了多少空間,目前還剩下多少空間等資訊。 語法:df [選項] 說明:df命令可顯示所有檔案系統對i節點和磁碟塊的使用情況。 該命令各個選項的含義如下: -a 顯示所有檔案系統的磁碟使用情況,包括0

Unix/Linux常用命令—改變檔案或目錄的訪問許可權

Linux系統中的每個檔案和目錄都有訪問許可許可權,用它來確定誰可以通過何種方式對檔案和目錄進行訪問和操作。 檔案或目錄的訪問許可權分為只讀,只寫和 可執行三種。以檔案為例,只讀許可權表示只允許讀其內容,而禁止對其做任何的更改操作。可執行許可權表示允許將該檔案作為一個程式執行

Linux Find 命令精通指南

Linux find 命令是所有 Linux 命令中最有用的一個,同時也是最混亂的一個。它很難,因為它的語法與其他 Linux 命令的標準語法不同。但是,它很強大,因為它允許您按檔名、檔案型別、使用者甚至是時間戳查詢檔案。使用 find 命令,您不但可以找到具這些屬性任意組合

linux find命令及特殊許可權

01find命令 檔案查詢 在檔案系統上查詢符合條件的檔案 檔案查詢:local  find 非實時查詢(資料庫查詢): local 實時查詢: find local: 依賴於構建的索引: 索引的構建是在系統較為空閒時自動進行(週期性任務) 索引構建過程需要遍歷整個檔

linux find命令詳解

每一種作業系統都是由成千上萬個不同種類的檔案所組成的。其中有系統本身自帶的檔案,使用者自己的檔案,還有共享檔案等等。我們有時候經常忘記某份檔案放在硬碟中的哪個地方。在微軟的WINDOWS作業系統中要查詢一份檔案是相當簡單的事情,只要在桌面上點選“開始”-“搜尋”中就能按照各種