搜尋
首頁php教程PHP开发linux下find查找指令用法

Linux下find指令在目錄結構中搜尋文件,並執行指定的操作。 Linux下find指令提供了相當多的查找條件,功能很強大。由於find具有強大的功能,所以它的選項也很多,其中大部分選項都值得我們花時間去了解一下。即使系統中含有網路檔案系統( NFS),find指令在該檔案系統中同樣有效,只你有對應的權限。 在運行一個非常消耗資源的find命令時,很多人傾向於把它放在後台執行,因為遍歷一個大的檔案系統可能會花費很長的時間(這裡是指30G位元組以上的檔案系統)。

1.指令格式:

find pathname -options [-print -exec -ok ...]

2.指令功能:

用於在文件樹種尋找文件,並作出對應的處理

3.指令參數:

pathname: find指令所尋找的目錄路徑。例如用.來表示目前目錄,用/來表示系統根目錄。 
-print: find指令將符合的檔案輸出到標準輸出。 
-exec: find指令對符合的檔案執行該參數所給予的shell指令。對應指令的形式為'command' {  } ;,注意{   }和;之間的空格。
-ok: 和-exec的作用相同,只不過以更安全的模式來執行該參數所給予的shell指令,在執行每一個指令之前,都會給予提示,讓使用者來決定是否執行。

4.指令選項:

-name   依照檔案名稱尋找檔案。
-perm   依照檔案權限來尋找檔案。
-prune  使用此選項可以使find命令不在目前指定的目錄中查找,如果同時使用-depth選項,那麼-prune將被find命令忽略。
-user   依照文件屬主來找出文件。
-group  依照文件所屬的群組來尋找文件。
-mtime -n +n  依照檔案的變更時間來尋找文件, - n表示檔案變更時間距現在n天以內,+ n表示檔案變更時間距現在n天以前。 find指令還有-atime和-ctime 選項,但它們都和-m 時間選項。
-nogroup  尋找無有效所屬群組的文件,即該文件所屬的群組在/etc/groups中不存在。
-nouser   尋找無有效屬主的文件,即該文件的屬主在/etc/passwd中不存在。
-newer file1 ! file2  尋找更改時間比檔案file1新但比檔案file2舊的檔案。
-type  尋找某一類型的文件,諸如:
b - 塊設備文件。
d - 目錄。
c - 字元設備檔案。
p - 管道文件。
l - 符號連結檔。
f - 普通文件。
-size n:[c] 尋找文件長度為n區塊的文件,帶有c時表示文件長度以位元組計。 -depth:在尋找文件時,先尋找目前目錄中的文件,然後再在其子目錄中尋找。
-fstype:尋找位於某一類型檔案系統中的文件,這些檔案系統類型通常可以在設定檔/etc/fstab中找到,該設定檔中包含了本系統中有關檔案系統的資訊。
-mount:在尋找文件時不跨越檔案系統mount點。
-follow:如果find指令遇到符號連結文件,就追蹤至連結所指向的文件。
-cpio:對匹配的檔案使用cpio指令,將這些檔案備份到磁帶設備。

另外,下面三個的差異:

-amin n   尋找系統中最後N分鐘存取的檔案
-atime n  尋找系統中最後n*24小時存取的檔案
-cmin n   尋找系統中最後n*24小時存取的檔案
-cmin n   尋找系統中最後一個N分鐘改變檔案狀態的檔案
-ctime n  尋找系統中最後n*24小時改變檔案狀態的檔案
-mmin n   尋找系統中最後N分鐘變更檔案資料的檔案

-mtime n  尋找系統中最後n*24小時被改變文件資料的檔案

5.使用實例:

實例1:尋找指定時間內修改過的檔案


指令:

           find -atime -2

輸出:

[root@peidachang ~]# find -atime -2
.
./logs/monitor
./.bashrc
./.bash_profile
./.bash_history

的文件說明:根據關鍵字尋找

指令:

find . -name "*.log"

輸出:

[root@localhost test]# find . -name "*.log" 
./log_link.log
./log2014.log
./test4/log3-2.log
./test4/log3-3.log
./test4/log3-1.log
./log2013.log
./log2012.log
./log.log
./test5/log5-2.log
./test5/log5-3.log
./test5/log.log
./test5/log5-1.log
./test5/test3/log3-2.log
./test5/test3/log3-3.log
./test5/test3/log3-1.log
./test3/log3-2.log
./test3/log3-3.log
./test3/log3-1.log

說明:

在目前目錄中尋找以.log結尾的檔案。 ". "代表目前目錄

實例3:依照目錄或檔案的權限來尋找檔案

指令:

find /opt/soft/test/ -perm 777

輸出:

[root@localhost test]# find /opt/soft/test/ -perm 777
/opt/soft/test/log_link.log
/opt/soft/test/test4
/opt/soft/test/test5/test3
/opt/soft/test/test3

:查找說明opt/soft/test/目錄下權限為777的檔案

實例4:按類型尋找

指令:

find . -type f -name "*.log"

輸出:

[root@localhost test]# find . -type f -name "*.log"
./log2014.log
./test4/log3-2.log
./test4/log3-3.log
./test4/log3-1.log
./log2013.log
./log2012.log
./log.log
./test5/log5-2.log
./test5/log5-3.log
./test5/log.log
./test5/log5-1.log
./test5/test3/log3-2.log
./test5/test3/log3-3.log
./test5/test3/log3-1.log
./test3/log3-2.log
./test3/log3-3.log
./test3/log3-1.log
[root@localhost test]#

說明:尋找當目錄,以.log結尾的普通檔案

實例5:尋找目前所有目錄並排序

指令:

find . -type d | sort

輸出:

[root@localhost test]# find . -type d | sort
.
./scf
./scf/bin
./scf/doc
./scf/lib
./scf/service
./scf/service/deploy
./scf/service/deploy/info
./scf/service/deploy/product
./test3
./test4
./test5
./test5/test3
[root@localhost test]#

實例6:依照尋找大小

指令:

find . -size +1000c -print

輸出:

[root@localhost test]# find . -size +1000c -print
.
./test4
./scf
./scf/lib
./scf/service
./scf/service/deploy
./scf/service/deploy/product
./scf/service/deploy/info
./scf/doc
./scf/bin
./log2012.log
./test5
./test5/test3
./test3
[root@localhost test]#

說明:

找出目前目錄大於1K的檔案

一、Linux中find常見用法範例

·find    path    -option    [    -print ]    [ -exec    -ok    command ]    {} ;🠎.print-print 找到的檔案中所找到的檔案。      -----將查到的檔案執行command操作,{} 和;之間有空格
#-ok 和-exec相同,只不過在操作前要詢用戶==================== ================================ -name    filename               #查找名為filename的文件
-perm                         #按執行權限來尋找
-user     username                       #以文件變更時間尋找文件,-n指n天以內,+n指n天以前
-atime     -n +n                #以檔案存取時間檢查GIN: 0px">-perm    尋找
-user     username              #依文件屬主來尋找
-group groupname       -n +n                 #以檔案變更時間以尋找文件,而n指n天以內,+n指n天前
-atime     內,+ n指n天前 
-ctime     -n +n                #使用中建立時間中尋找文件,-n指n天以     #查無有效屬組的文件,即文件的屬組在/etc/groups中沒有
-nouser                       #查無有效屬主的文件,即文件的屬主在/et        找文件,-n指n天以內, +n指n天前 
-ctime     -n +n                - #依照檔案建立時間找出     #查無有效屬組的文件,即文件的屬組在/etc/groups中不存在
-nouser                       #查無有效屬主的文件,即文件的屬主在/et        #查詢改變時間比f1新但比f2舊的文件
-type      b/d/c/p/l/f          #查詢為區塊裝置、目錄、字元裝置、管道、符號連結、普通檔案   長度為n塊[或n位元組]的文件
-depth                        #使用在進入子目錄前先於「   #查更改時間比f1新但比f2舊的文件
-mount                        # mount點
-follow                       #若遇到符號連結文件,並追蹤連結所指的檔案
-cp    io命令,將他們備份到磁帶設備中
-prune                       ,忽略某目錄中====== ==============================================
$find    ~ -name    "*.txt"    -print      #在$HOME中檢查.txt檔案並顯示
$find    .     -name   ]*"    -pri26nbsp;     #對配對的文件使用cpio指令,將他們備份到磁帶裝置中
-prune                          "    -print    #以大寫字母開頭的文件查詢
$find    /etc    -name "host*"    -print #查host開頭的文件
$find    .    -name    "[a-z][a-z][0--9][0--9].txt"    -print 和兩個數位開頭的txt檔案
$find .    -perm    755    -print
$find    .    -perm -007    -exec ls -l find    . -type d    -print   列印目錄結構
$find    .   !    -type    d    -print 搜尋子目錄,故可以和find結合使用。 在/usr/include 所有子目錄中的.h文件中找字符串AF_INEF6
$find    .    -type l    -print $find    .    文件
$find    .    -size    100c -print        # 發現100c的文件
$find    .    -size    +10    -print         +10    -print      
$find    etc    home    apps     -depth    -print | cpio    -ivcdC65536    -o   /dev/rmt0
$find    /etc -name "passwd*"    -exe . -name "yao*"    | xargs file
$find    . -name "yao*"    |    xargs    echo     "" > /tmp/core.log
$find   ========== "yaomp/core.log
$find   ==================== 是======================================= find    -name april*                    april開始的文件
find    -name    april*    fprint file          以目前目錄下找出以「於
find    /mnt    -name tom.txt    -ftype vfat    在/mnt下尋找名稱為tom.txt且檔案系統類型為vfat的檔案
find    /mnt    -name t.txt ! -ftype vfat     在/mnt下查找名稱為tom.txt且文件系統類型不為vfat的文件
find    /tmp    -name wa* -type l             在/tmp下查找名為wa開頭且類型為符號連結的文件
find    /home    -mtime    -2                                在第1天內被存取的檔案
find / home -mmin     +60                    /home下檢查60分鐘前改變的文件🠠       檢視最近30分鐘前已存取的文件
find /home    -newer    tmp.txt               在/home下檢查更新時間比tmp.txt更近的文件或目錄
find /home    -anewer    tmp.txt                             列出檔案或目錄改動過之後,2日內被存取的文件或目錄
find    /home    -user cnscn               +501                   所列/home目錄內使用者的識別碼大於501的檔案或目錄
find    /home    -group    cnscn                                 所列/home內組id為501的檔案或目錄
find    /home    -nouser                      的列/home          列出/home內不屬於本地群組的檔案或目錄
find    /home     -name tmp.txt     -maxdepth    4  出/home內的tmp.txt 查時深度最多為3層
find    /home    -name tmp.txt    -mindepth    3              尋找大小為0的檔案或空白目錄
find /home    -size    +512k                 於512k的檔案
find        發現小於512k的檔案
find    /home    -links    +2              0700                  以檢查權限為700的檔案或目錄
find    /tmp    -name tmp.txt    -exec cat {} ;
find    /tmp    -name    tmp.txt    -ok    rm {} ; find    /    -amin     /    -atime    -2           # 以系統中「最後48小時所存取的檔案」所存取的檔案
find     /    -empty                # 以系統中為空白的檔案或資料夾於
find  的文件
find     /    -mmin    -5           # 以系統尋找在系統中最後5分鐘修改的文件
find     /    -mtime    -1          #在系統中使用最後24小時修改過的檔案
find    中屬於作廢使用者的文件
find     /    -user     fred         #找出在系統中屬於FRED這個使用者的檔案

查目前目錄下的所有普通檔案 
------------------------------------ -------------------------------------------- # find . -type f -exec ls -l {} ; 
-rw-r--r--      1 root       root          34928 2003-        34928 2003-02-251/     1 root       root          12959 2003- 02-25    ./conf/magic 
-rw-r--r--      1 root       root       下的所有普通文件,並在- e x e c選項中使用ls -l指令將它們列出 
======================================== =========
在/ l o g s目錄中查找更改時間在5日以前的檔案並刪除它們:
$ find logs -type f -mtime +5 -exec    -ok    rm {} ; 
== ===============================================
查詢當天修改過的檔案
[root@book class]# find    ./    -mtime    -1    -type f    -exec    ls -l ==== ==============================
查詢文件並詢問是否要顯示
[root@book class]# find    ./    - mtime    -1    -type f    -ok    ls -l    {} ;  
? y    13709    1月12 12:22 ./classDB.inc.php
[root@book class]# find    ./    -mtime    -1    -type f    -ok   [root@book class]# =========================================== ======
查詢並交給awk去處理
[root@book class]# who    |    awk    '{print $1"t"$2}'
cnscn     pts/0 ========== =======================================
awk---grep---sed [ root@book class]# df    -k |    awk '{print $1}' |    grep    -v    'none' |    sed    s"//dev/root/g"//dev/ # df    -k |    awk '{print $1}' |    grep    -v    'none'
檔案系統
/dev/sda2
/dev/sda1
檔案系統
/dev/sda2
/dev/sda1
檔案系統
/dev/sda2
/dev/sda1
檔案系統
/dev/sda2
/dev/sda1
文件系統
/dev/sda2
/dev/sda1
1)在/tmp中找所有的*.h,並在這些檔案中尋找「SYSCALL_VECTOR",最後列印所有包含"SYSCALL_VECTOR"的檔案名稱A) find    /tmp    -name    "*.h"   /tmp    -name    "*.h"   /tmp    -name   grep SYSCALL_VECTOR
B) grep    SYSCALL_VECTOR    /tmp/*.h | cut     -d':'    -f1| uniq > name🠎CSYSname -o. CALL_VECTOR"    {}    ; -print
2)find / -name filename -exec rm -rf {} ;
     find / -name filename -ok rm -rf {} ; 
3)例如要找出磁碟中大於3M的檔案:
find . -size +300k -exec ls -ld {} ; 
4)將find出來的東西拷貝到另一個地方
find *.c -exec cp '{}' /tmp ';' 如果有特殊文件,可以用cpio,也可以用這樣的語法:
find dir -name filename -print | cpio -pdv newdir 
6)查找2004-11-30 16:36:37時更改過的檔案
# A=`find ./ -name "*php" ` |    ls -l --full-time $A 2>/dev/null | grep "2004-11-30 16:36:37

二、linux下find指令的用法

1. 基本用法:二、linux下find指令的用法🠎

1. 基本用法:
/ -name 檔案名稱     find ver1.d ver2.d -name '*.c' -print    尋找ver1.d,ver2.d *.c檔案並列印      find . -type d -print 從目前目錄尋找,僅尋找目錄,找到後,列印路徑名稱。位元組大小的文件,c表示位元組)
      find / -size +1500c (找出大於1,500位元組大小的文件,+表示大於)    
    小於)    
4. 時間:
      find / -amin n 最後n分鐘 
      find / -atime n 最後n 天改變狀態
5 . 其它:
      find / -empty 空白檔案、空白資料夾、沒有子目錄的資料夾
      find / -false 尋找系統中總是錯誤的檔案一個資料夾
      find / -false 尋找系統中總是錯誤的檔案   type為ext2
      find / -gid n 群組id為n的檔案
      find / -group gname 群組名稱為gname的檔案
    在在某個層次目錄中按遞減方式查找
6. 邏輯
      -and 條件與-or 條件或
7. 查找字串
      find . -name '*.html' -

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。