查找文本我们一般用grep、Egrep或fgrep命令查找,那么查找文件要怎么查呢,当然使用文件名通配或locate固然可以实现,但是上述两种方法只是以模糊匹配的方式查找的,如果我们想要精确查找某路径下的文件估计上述两种方法实现起来就比较困难,这里我将要介绍一种更好的命令来实现这一切,那就是find命令。find命令可以精确、实时的查找某路径下的文件,其可以指定查找路径,虽然其查询方式是遍历式的,但是其查找速度也是非常快的。
find命令的使用格式:
find [查找路径…] [查找条件]
[处理动作]
其中查找条件可以省略,表示显示所有的文件,查找路径也可以省略,表示当前路径,处理动作也可以省略,表示只是显示出来,当仅执行find命令时表示会显示当前目录下的子目录及子目录下的所有文件。
一、下面我们说一下find查找条件的用法:
-name
“FILENAME” 支持FILENAME通配,并且区分大小写。
-iname
“FILENAME” 不区分文件名称大小写;
-user USERNAME
根据属主查找;
-group GROUPNAME 根据属组查找;
-uid UID 根据属主ID查找;
-gid GID 根据属组ID查找;
-nouser
查找没有属主的文件;
-nogroup 查找没有属组的文件;
-regex “PATTERN” 可用正则表达式;
-iregex “PATTERN” 可用正则表达式,不区分大小写;
上述两种方法与正则表示式的用法不完全相同并且也不常用,这里就不多做解释了,同时也不建议朋友们使用;
多条件查找,条件间逻辑关系:
-a 并关系;
-o 或关系;
!,-not 非关系;
根据文件类型查找;
--type
[文件类型]: 根据文件类型查找。
linux中的文件类型一般包括以下几种:
f 普通文件;
d 目录文件;
l 软链接文件;
b 块设备文件;
c 字符设备文件;
p 管道文件;
s 套接字文件;
下面我们简单举一个例子:
根据文件大小查找;
-size [+/-]# 其中的#表示数字,其默认单位为Byte,也可以使用K、M、G等单位,+/-号可以省略表示等于#Byte大小(不超出一个单位的大小)的文件,+#表示大于#Byte大小的文件,-#表示小于#Byte大小的文件;
例如:
-size 2k
查找1~2k的文件;
-size +2k
查找大于2k的文件;
-size -2k
查找1~2M之间的文件;
根据文件时间查找;
时间单位分为两种:一种是按天查询,另外一种是按分钟查询;
单位是天:
-atime [+/-]#
根据访问时间查找;
-mtime
[+/-]# 根据修改时间查找;
-ctime
[+/-]# 根据改变时间查找;
单位是分钟:
-amin
[+/-]# 根据访问时间查找;
-mmin
[+/-]# 根据修改时间查找;
-cmin
[+/-]# 根据改变时间查找;
至于其它时间的查询方式与举例类似,这里不做过多解释。
根据权限查找;
perm命令的用法:-perm
[mode]
mode有三种方式:
-mode
所有都得匹配;
mode
精确匹配;
/mode 任何一位匹配都行;
处理动作:
-print
默认显示出来;
-ls
以详细的格式显示出来;
-ok COMMAND {}
\;表示执行命令并且提醒用户确认;
-exec COMMAND
{} \;表示执行命令并且不予提醒;
上述命令中的{}是占位符;\;是固定格式;
平常在使用find的处理动作ok或者exec命令时会出现一些命令不能使用的现象,这时可以和xargs命令一块使用;
xargs命令的使用格式:
xargs COMMAND 执行额外的命令,并通过标准输入过来;
二、小结:
以上就是find命令的用法及选项的详细解释,鉴于作者记忆及理解力有限,如有疏漏,敬请谅解同时欢迎朋友们给予指点。
阅读(322) | 评论(0) | 转发(0) |