Linux find命令的使用

本文发布时间: 2019-Mar-22
文件的查找一般有两种方法:locate命令和find命令。由于locate的功能有限,本文主要介绍find命令的使用。只是对locate命令做简单的介绍。locate命令 1、命令的特点Locate的命令是模糊查找。而且由于它是在database中查找,并不是在系统上查找所以它属于非实时性查找,查找并不精确,但是查找速度很快。其database可以用updatedb命令来生成。此命令的功能有限。2、使用格式locate KEYWORD例如:你要搜索passwd这个文件就可以使用直接在命令行模式下输入# locate passwdfind命令 1、命令特点Find命令是精确查找,可指定查找路径,由于它是在系统上查找所有查找速度慢。2、使用格式find [查找路径……] [查找条件] [处理动作](1) 查找路径如果不指定查找路径,find默认在当前路径下搜索,当然find命令的查找路径可以指定多个,例如你可以同时指定在/etc和/var目录下查找passwd:#find /etc /var passwd(2) 查找条件-name “FILENAME”-iname “FILENAME”这是按照文件名查找,-name表示区分文件的大小写,-iname表示忽略大小写,并且都支持文件名的通配。例如:#find /etc -name “passwd”这表示查找/etc下passwd文件,是精确查找,而且明确区分大小写。#find /etc –name “*passwd”这表示查找以passwd结尾的文件#find /etc –iname “passwd”这条命令表示忽略大小写,即:Passwd 、PASSWD、passwd等都可以搜索到。 -user USERNAME-group GROPNAME 这表示按照文件名的属主和属组进行查找。 例如:#find /etc –user redhat 这表示在/etc下查找属主是redhat的文件,同理: #find /etc –group redhat查找的是属组是redat的文件。 -uid UID -gid GID这表示当用户没有属主属组的时候,可以根据用户ID号和组ID号进行查找。 -nouser -nogroup 这是查找没有属主和属组的文件。例如: #find /tmp –nouser 表示查找tmp目录下没有属主的文件。 -type [d|f|l|b|c|p|s] 表示可以根据文件的类型来查找。例如: #find /etc –type d 表示查找/etc下的所有目录。 -size [-/+]#(#表示数字,数字后面的单位可以是M,K,B) 表示按照文件的大小来搜索,数字的前面也可以加+/-。例如:#find /etc –size 2k 表示查找幅度不大于1个单位的文件,此 命令表示:查找/etc下大于1k到2k之间的文件。同理: #find /etc –size +2k 表示查找大于2k的文件。#find /etc –size -2k 表示查找小于2k的文件。 -atime [+/-]# -mtime [+/-]# -ctime [+/-]# 表示按照文件的访问、修改、改变时间进行查找。其单位是天。 -amin [+/-]# -mmin [+/-]# -cmin [+/-]# 也表示按照文件的访问、修改、改变时间进行查找。但是其单位是分钟。 例如:#find /tmp –mtime 2 表示到当前时间恰好2天修改过的文件。 #find /tmp –mtime -2 表示在2天内修改过的文件。 #find /tmp –mtime +2 表示2天之前修改过的文件。 -perm [//-]mode 表示按照文件的权限进行查找。 Mode:表示精确匹配。例如:#find /etc –perm 222 这表示查找所有用户的权限必须是222的文件 /mode:表示任何一位匹配都行。例如:#find /etc/ -perm /222 表示只要有一类用户具有W权限就行。 -mode:表示所有都匹配。例如:#find /etc –perm -222 表示所用户必须有w权限,其他权限不管。 多条件查找:就是指条件间的逻辑关系: -a:表示并关系。例如: #find /tmp –name “*passwd*” –a –not –user redhat 表示:文件命中包含passwd并且属主不是redhat的文件。 -o:表示或关系。例如: #find /tmp –name “*passwd*” –o –not –user redhat 表示:文件命中包含passwd或者属主不是redhat的文件。 !或 –not:表示非关系。例如: #find /tmp –not /( -name “*passwd*” -a –user redhat \ ) 表示:文件命中包含passwd并且属主不是redhat的文件。(3) 动作处理-print:在不指定动作处理时,默认情况下是输出到屏幕中。-ls:表示以详细信息显示。例如:-ok COMMAND {} \;-exec COMMAND {} \;这两个命令的用法一样都表示对前边find找的内容进行进一步的处理,只是-ok选项提醒用户确认,而-exec选项不提醒用户。{}表示占位符,find每找一个都替换掉小括号进行处理;\;是固定格式。例如:#find ./ -perm 400 –exec chown redhat {} \; 表示查找当前目录下权限为400的文件并将其属主改为redhat。find 也可以通过管道命令与xargs命令结合使用,其格式是:find | xargs COMMAND 例如:#find ./ -perm -022 | xargs chomd o-w 此命令表示将find查找到的文件的其他用户的写权限去掉。其他的具体用法可以通过man命令获得。


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2024-Mar-04 02:11pm
栏目列表