首页 >> 学习 >> Linux常用命令 >> find
find命令

本节重要性:★★★★☆    本节难度:★★★★★

比起locate来,find用起来要复杂一些,但功能也强大得多。

命令用途

在指定目录中查找文件

命令格式

find [option] [path] [rule] [action]

常用选项

-P	依据物理目录(Physical)查找
-L	依据符号链接目录(逻辑目录,Logical)查找

常见用法

find命令的参数包括要查找的路径(默认是当前目录)、查找规则和找到后的操作三部分:

如在当前目录下查找名字为fruit的文件或目录:

[peter@ibi98 ~]$ find . -name fruit
./prac/fruit

查找规则包括:

-name filename		#查找名为filename的文件
-perm			#按执行权限来查找
-user username		#按文件属主来查找
-group groupname	#按组来查找
-mtime -n +n		#按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n		#按文件访问时间来查找文件,-n指n天以内,+n指n天以前
-ctime -n +n		#按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup		#查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser			#查无有效属主的文件,即文件的属主在/etc/passwd中不存在
-newer f1 !f2		#找文件,-n指n天以内,+n指n天以前 
-ctime -n +n		#按文件创建时间来查找文件,-n指n天以内,+n指n天以前 
-nogroup		#查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser			#查无有效属主的文件,即文件的属主在/etc/passwd中不存在
-newer f1 !f2		#查更改时间比f1新但比f2旧的文件
-type b/d/c/p/l/f	#查是块设备、目录、字符设备、管道、符号链接、普通文件
-depth			#使查找在进入子目录前先行查找完本目录
-fstype			#查更改时间比f1新但比f2旧的文件
-type b/d/c/p/l/f	#查是块设备、目录、字符设备、管道、符号链接、普通文件
-size [+-]n[cwbkMG]	#查长度为[大于|小于]n块[或n字节(c)、字(w,2字节)、块(b)、
			 kB、MB、GB]的文件
-depth			#使查找在进入子目录前先行查找完本目录
-mount			#查文件时不跨越文件系统挂载点
-fstype			#查位于某一类型文件系统中的文件,这些文件系统类型通常可在
			 /etc/fstab中找到

找到后的操作包括:

-delete			#删除文件
-exec command ;		#执行命令command
-exec command {} +	#执行命令command,并把找到的文件名字作为命令command的参数
-execdir command ;
-execdir command {} +
-fls file		#类似-ls,输出到文件file
-fprint file		#类似printf,输出到文件file
-fprint0 file		#类似printf0,输出到文件file
-fprintf file format	#类似printf format,输出到文件file
-ls			#在标准输出上以ls -dils方式列出结果
-ok command ;		#类似-exec command ;,执行之前先询问用户
-okdir command ;	#类似-execdir command ;,执行之前先询问用户
-print			#在标准输出上列出文件名,结尾换行
-print0			#在标准输出上列出文件名,结尾不换行
-printf format		#在标准输出上按格式输出
-prune			#忽略某个目录
-quit			#直接退出

下面给出几个应用的例子。

查找目录并列出目录下的文件(为找到的每一个目录单独执行ls命令,没有选项-print时文件列表前一行不会显示目录名称):

$ find ./ -type d -print -exec ls {} \;

查找目录并列出目录下的文件(为找到的每一个目录单独执行ls命令,执行命令前需要确认):

$ find ./ -type d -ok ls {} \;

在当前目录中查找名为test的文件,找到后打印其内容:

$ find ./ -name test -print -exec cat {} \;

查找空文件并删除:

$ find ./ -empty -type f -print -delete

find功能强大,不但可以按照不同的规则查找文件,还可以再找到后执行指定的操作。

<<上一节  下一节>>