歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> linux基礎命令(19) find命令概覽

linux基礎命令(19) find命令概覽

日期:2017/3/3 16:38:46   编辑:關於Linux

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 time選項。

-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分鐘被改變文 件狀態的文件

-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

說明:

超找48小時內修改過的文件

實例2:根據關鍵字查找

命令:

find . -name "*.log"

輸出:

[root@localhost test]# find . - name "*.log"

./log_link.log

./log2014.log

./tes t4/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/l ib

./scf/service

./scf/service/deploy

./scf/service/ deploy/info

./scf/service/deploy/product

./test3

./t est4

./test5

./test5/test3

[root@localhost test] #

實例6:按大小查找文件

命令:

find . -size +1000c -print

輸出:

[root@localhost test]# find . -size +1000c - print

.

./test4

./scf

./scf/lib

./scf/se rvice

./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的文件

查看全套文章:http://www.bianceng.cn/OS/Linux/201301/35075.htm

Copyright © Linux教程網 All Rights Reserved