Linux命令之find文件查找

 find命令用來在指定目錄下查找文件。任何位於參數之前的字符串都將被視爲欲查找的目錄名。如果使用該命令時,不設置任何參數,則find命令將在當前目錄下查找子目錄與文件。並且將查找到的子目錄和文件全部進行顯示。

語法

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

參數說明 :

find 根據下列規則判斷 path 和 expression,在命令列上第一個 - ( ) , ! 之前的部份爲 path,之後的是 expression。如果 path 是空字串則使用目前路徑,如果 expression 是空字串則使用 -print 爲預設 expression。

expression 中可使用的選項有二三十個之多,在此只介紹最常用的部份。

-mount, -xdev : 只檢查和指定目錄在同一個文件系統下的文件,避免列出其它文件系統中的文件

-amin n : 在過去 n 分鐘內被讀取過

-anewer file : 比文件 file 更晚被讀取過的文件

-atime n : 在過去n天內被讀取過的文件

-cmin n : 在過去 n 分鐘內被修改過

-cnewer file :比文件 file 更新的文件

-ctime n : 在過去n天內被修改過的文件

-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名稱是 name

-ipath p, -path p : 路徑名稱符合 p 的文件,ipath 會忽略大小寫

-name name, -iname name : 文件名稱符合 name 的文件。iname 會忽略大小寫

-size n : 文件大小 是 n 單位,b 代表 512 位元組的區塊,c 表示字元數,k 表示 kilo bytes,w 是二個位元組。-type c : 文件類型是 c 的文件。

d: 目錄

c: 字型裝置文件

b: 區塊裝置文件

p: 具名貯列

f: 一般文件

l: 符號連結

s: socket

-pid n : process id 是 n 的文件

你可以使用 ( ) 將運算式分隔,並使用下列運算。

exp1 -and exp2

! expr

-not expr

exp1 -or exp2

exp1, exp2

實例

find   -name   查找某個文件,文件名爲name

例如:

find /etc/ -name  abc    查找/etc/目錄下名爲abd的文件並輸出

find /etc -name *.conf   查找/etc/目錄下所有以.conf結尾的文件

find /etc -name  VBM   查找/etc/目錄下所有以VBM開頭的文件


find  -user  name   查找某個文件所有人爲user的文件

find -group  name  查找某個文件所有組爲group的文件

find  -user name1 -group name2,查找文件所有人爲name1且所有組爲name2的文件

find -not -user name 查找文件所有人不爲name的文件 (-not表示反的意思)

find -not -user test-o -group root 查找文件所有人不爲test或者文件所有組爲root的文件   -o表示或者

 

find /etc -maxdepth 1 -name passwd   查找此目錄最多下一級目錄的文件passwd
find /etc -maxdepth 2 -mindepth 2 -name *.conf查找/etc下最多兩級且最少兩極的目錄的以.conf結尾的文件

測試:

find /home/work -size 20K     查找20K的文件
find /home/work -size -20K    查找小於20K的文件
find /mnt -size +20K    查找大於20K的文件

測試:在/home/work/下給file1 file2 寫入不同大小,然後測試以上命令

dd if=/dev/zero of=/home/work/file1 bs=1 count=10240

dd if=/dev/zero of=/home/work/file1 bs=1 count=20480

運行結果:

[root@glkjdevapp work]# find /home/work -size +9k;
/home/work/VBM_ROM7.0.TEST.war
/home/work/file1

 

find -type  查找文件類型
find /home/work -type d    查找目錄
find /home/work -type f     查找文件

運行結果:

[root@glkjdevapp work]# find /home/work -size +9k;
/home/work/VBM_ROM7.0.TEST.war
/home/work/file1
[root@glkjdevapp work]# find /home/work -type d  
/home/work
[root@glkjdevapp work]# find /home/work -type f
/home/work/VBM_ROM7.0.TEST.war
/home/work/file1.txt
/home/work/file2.txt
/home/work/file1

 

find /home/work -cmin 10   查找整10分鐘前操作的文件
find /home/work -cmin -10  查找10分鐘內操作的文件
find /home/work -cmin +10  查找10分鐘前操作的文件

find -perm
測試,創建文件:touch /home/work/file {1..5}

分配權限:
 chmod 000 *
 chmod 404 file1
 chmod 444 file2
 chmod 644 file3
 chmod 640 file4

find /home/work/ -perm 444  查找權限爲444的文件,所以查找到的文件是file2

[root@glkjdevapp work]# find /home/work/ -perm 444
/home/work/file2

find /home/work/ -perm -444 查找權限包括444的文件,因爲444是r--r--r--,644是rw-r--r--,所以644包含444,所以查找到的文件是file2和file3.

[root@glkjdevapp work]# find /home/work/ -perm -444
/home/work/
/home/work/file2
/home/work/file3

find /home/work -perm /444 查找 o權限包括r或g權限包括r或o權限包括r的文件,即只要包含r即可,所以查找到的文件是file1 file2 file3 file4。

[root@glkjdevapp work]# find /home/work -perm /444
/home/work
/home/work/file1
/home/work/file2
/home/work/file3
/home/work/file4

find -exec command {}  {}表示查找到的文件

例如:find /home/work -perm 444 -exec rm -rf {} \;整體這個命令的意思是,刪除權限爲444的文件

find /etc -name *.conf -exec cp -rp {} /home/work\;遞歸複製/etc下以.conf結尾的文件到/home/work

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章