1 综述:
find是高级的查找文件工具。
用法:find [-H] [-L] [-P] [-D debugopts] [-Olevel] [starting-point…] [expression]
⑴ -H -L -P -D -Olevel
-H -L -P都是对symbolic links操作的选项(symbolic links类似于windows下的桌面快捷方式)。
-D 是选择性打印一些find的查询信息
-Olevel 是进行一些查询优化,有查询等级的划分
⑵ starting-point:开始搜寻的目录
⑶ expression:是查找规则,其中分为Tests、Actions、Global options、Positional options、Operators。
具体的可以man find一下。
2 一些常用的expression选项
-name filename :
检索匹配指定文件名的所有文件。其中,指定的文件名不必包括目录路径(从当前目录开始,递归的进行检索所有子目录)。
filename可以是单、双引号括起来的通配符组成的字符串(这也说明了find工具,接受通配符,因为这个通配符不是由shell解析的,而是提交给find工具解析的)。
[ex1] 递归查找当前目录下,所有后缀为.v的文件
find ./ -name ‘*.v’ #在当前目录下找所有后缀为.v的文件
[ex2] 使用了命令的替换的形式,递归查找当前目录下的所有文件,并复制到./filedirectory目录下。
cp `find ./ *` ./filedirectory
cp $(find ./ *) ./filedirectory
-user username:
检索其文件属主匹配指定用户的所有文件。
-nouser
检索其文件属主未出现在/etc/passwd文件中定义的所有文件。
-atime [+ -]n
选择在n天之前,之内或恰好n天访问过的文件
“+”表示在之外,“-”表示在之内,不写“+/-”表示恰好。下同↓↓↓↓
-ctime [+-]n
选择在n天之前,之内或恰好n天状态信息发生变动的文件
-mtime [+-]n
选择在n天之前,之内或恰好n天修改过文件内容的文件
-mmin [+-]n
选择在n分钟之前,之内或恰好n分钟 修改过文件内容的文件
find ./ -name '*.v' -mmin -30
-size [+-]n[cwbkMG]
根据文件大小来进行选择。[cwbkMG]是对n的修饰,如果都不加,默认是n个512字节的数据块
c :字节。表示n个字节
w :双字节。表示n个双字节
b :512字节的数据块(默认)
k :KB为单位
M :MB为单位
G :GB为单位
-newer filename
选择其修改日期比给定的文件更近的文件
-type filetype
检索指定类型的文件
f :普通文件
d :目录
b :块特殊文件
c :字符特殊文件
p :管道(FIFO)文件
l :符号链接文件
s :套接字文件
3 find命令的逻辑运算符
find工具支持逻辑运算符。
形式为:逻辑非“!”、逻辑或“-o”、逻辑与“-a”
使用举例:
⑴ 逻辑非“!”
find . ! -user root
表示检索当前目录下,不属于root用户的文件
⑵ 逻辑或“-o”
find / \(-name ‘*.o’ -o -name a.out \) -atime +30
表示检索根目录下超过30天没有访问的,文件扩展名为.o或者文件名为a.out的所有文件。
“\(“转义字符加个特殊符号,防止shell对其进行了解析
⑶ 逻辑与“-a”
find / -type d -a -user book
表示检索根目录下的属于book用户的所有子目录