歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> Linux下find命令

Linux下find命令

日期:2017/3/3 12:34:26   编辑:Linux技術

Linux下find命令在目錄結構中搜索文件,並執行指定的操作。Linux下find命令提供了很多的查找條件,功能非常強大。

1.命令格式:

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

2.命令功能:

用於在文件樹中查找文件,並作出相應的處理(可能訪問磁盤)

3.命令參數:

pathname: find命令所查找的目錄路徑,例如:用.來表示當前目錄,用/來表示系統目錄

-print: find命令將匹配的文件輸出到標准輸出。

-exec: find命令將匹配的的文件執行該參數所給出的shell命令,相應命令的形式為'command' { } \;,注意{ }和\;之間的空格。

-ok: 和-exec的作用相同,只不過以一種更為安全的模式來執行該參數所給出的shell命令,在執行每一個命令之前,都會給出提示,讓用戶來確定是否執行。

options常用的有如下選項:

-name: 按照名字查找

-perm: 按照文件權限來查找文件

-prune: 不在當前指定的目錄下查找。

-user: 按照文件屬主來查找文件

-group: 按照文件多數的組來查找文件

-mtime -n +n :按照文件的更改時間來查找文件,-n表示文件更改時間距現在n天以內, +n表示文件更改時間距現在n天以前。

-nogroup: 查找無有效所屬組的文件,即該文件所屬組在etc/group中不存在

-nouser : 查找無有效屬主的文件,即該文件的屬主在/etc/passwd中不存在

-type : 查找某一類型的文件

下面通過一些簡單的例子來介紹find的常規用法

1.按名字查找

1)查找文件名為test.c的文件

[admin@bogon ~]$ find -name test.c

./test.c

[admin@bogon ~]$

2)查找文件名包含 test 的文件

[admin@bogon ~]$ find -name 'test'

./test

./BIT/test

3)在$HOME目錄及其子目錄中,查找所有文件

admin@bogon ~]$ find ~ -name '*' -print

4)具有條件的查找

-a 與條件

-o 或條件

-not 非條件(此參數的功能類似於否定參數‘!’)

1)

[admin@bogon ~]$ find -name "t*" -a -name "*.c" //查找以t為開頭,以.c為結尾的文件

./test.c

[admin@bogon ~]$

2)

[admin@bogon ~]$ find -name "t*" -o -name "*.c" //查找以t開頭或者以.c為結尾的文件

./test.c

./test

./.gnupg/trustdb.gpg

./BIT/test

./BIT/test-bak

./.gconf/apps/nautilus/desktop-metadata/trash

./.gconf/apps/panel/applets/trash_applet

[admin@bogon ~]$

3)用!來表示找到不以.c為結尾的文件

[admin@bogon ~]$ find ./ ! -name '*.c' -print

4)找到不以.c為結尾的文件

[admin@bogon ~]$ find ./ not -name '*.c' -print

./test.c

find: `not': No such file or directory

[admin@bogon ~]$ find -name "t*" -not -name "*.c"

./test

./.gnupg/trustdb.gpg

./BIT/test

./BIT/test-bak

./.gconf/apps/nautilus/desktop-metadata/trash

./.gconf/apps/panel/applets/trash_applet

[admin@bogon ~]$

2.根據文件類型搜索:

普通文件 f

符號文件 l

目錄 d

字符設備 c

塊設備 b

套接字 s

管道文件 p

3.根據文件大小

-size

通過-size選項可以通過文件大小查找文件。

-size n:[c] 查找文件長度為n塊的文件,帶有c時表示文件長度以字節計。

b——塊(512字節); c——字節; w——字(2字節);

k——千字節 ; M——兆字節; G——吉字節。

[admin@bogon ~]$ find -size +18k 查找比18k大的文件

[admin@bogon ~]$ find -size -18k 查找比18k小的文件

4.按照文件深度進行查找

-maxdepth

-mindepth

用來限定搜索指定目錄的深度。

1)在root目錄以及子目錄下查找文件名為test的文件

2) find -maxdepth 2 -name test 在root目錄以及深度為1的子目錄中查找文件名為test的文件

3)find -mindepth 1 -maxdepth -name test 在深度為0的子目錄以及深度為5的子目錄中查找文件

名為test的文件

5.根據文件權限來查找

-perm

find -perm 664

6.按照文件時間進行查找

linux文件系統中的每個文件都有三種時間戳:

1. 訪問時間(atime——access time):就是上次訪問這個文件的時間。

2. 改變時間(ctime——change time):就是文件的inode改變的時間(什麼是inode?)當你往一個文件中添加數據或者刪除數據的時候,修改文件所有者的時候,鏈接改變的時候,文件的ctime就會發生改變。

3. 修改時間(mtime——modification time):就是文件的內容上一次發生改變的時候的時間。

1)

[admin@bogon ~]$ find -type f -atime -2

2)[admin@bogon ~]$ find -atime +10

3)find ./ -newer test.c 查找比test.c還要新的文件

Copyright © Linux教程網 All Rights Reserved