首页 > 服务器学习 > Linux > Linux中的常用查找命令
2016
12-16

Linux中的常用查找命令

find:文件搜索命令

语法:find [搜索范围] [-选项] [匹配条件]

find搜索都是精准搜索,即搜索结果只包含完全匹配搜索条件的文件

想要进行模糊搜索要使用通配符,如find /etc -name *init*则搜索根目录下的etc目录下的所有文件名包含init的文件。

通配符*匹配0个或多个任意字符,通配符?匹配单个任意字符。

常用的选项:

-name:根据文件名区分大小写搜索

-iname:根据文件名不区分大小写搜索

-size:根据文件大小搜索,后面跟大小的数字n,单位是数据块,一个数据块是512字节,0.5K,如100M的文件为102400K,即204800的数据块。+n表示大于,-n表示小于,n表示等于

-mindepth:find命令默认会递归查找整个目录树,而这非常消耗时间和资源,好在目录查找的深度可以通过 maxdepth 选项手动指定。如:find ./test -maxdepth 2 -name "*.php"

-mindepth:与maxdepth选项对应的,还有一个选项叫做mindepth ,正如名字所表示的那样,它会至少到达第N 层子目录后才开始查找文件

-not:反向查找,除了查找满足条件之外的文件,如find ./test -not -name "*.php",查找所有扩展名不是 php 的文件和文件夹。我们也可以使用感叹号 ! 来代替 -not,如:find ./test ! -name "*.php"

-user:查找指定目录下指定的所有者的所有文件

-group:查找指定目录下指定的所属组的所有文件

-anewer file : 比文件 file 更晚被读取过的文件

-cnewer file :比文件 file 更新的文件

-atime : (access time)在过去 n 天过读取过的文件,即访问时间

-ctime : (change time)在过去 n 天文件状态最新改变的时间。文件有一些个基本的属性,权限,用户,组,大小,修改时间等,只要是这些信息变化了,那么ctime都会发生变化

-mtime:(modify time)即文件数据最新的修改时间,指的就是文件内容的最新修改时间,注意和-ctime区分

-atime、-ctime、-mtime选项后面跟数字n,单位是天,+n表示超过,-n表示少于,n表示等于

-amin:根据访问时间搜索

-cmin:根据文件修改时间的文件属性搜索

-mmin:根据文件的内容的修改时间搜索

-amin、-cmin、-mmin选项后面跟数字n,单位是分钟,+n表示超过,-n表示少于,n表示等于

-type:根据文件类型查找,f为文件,d为目录,l为软连接文件

-inum:根据i节点查找

find搜索的条件选项:

-a:两个条件同时满足

-o:两个条件满足任意一个即可

find /etc -name init* -a -size -204800表示查找根目录下的etc目录下的文件名以init开头并且小于100M的所有文件

-exec/-ok:查找指定的文件以后指定一个操作(-ok会有一个是否操作的确认提示)

语法:find [搜索范围] [-选项] [匹配条件] -exec/-ok [指定命令] {} \;

如:find /etc -name init* -exec/-ok ls -l {} \;

表示搜索etc目录下的所有以init开头的文件或目录并执行ls命令显示详细信息,如果用-ok,则会每一条都提示一个是否执行后面指定操作的确认提示
locate:在文件资料库中查找文件

locate [文件名]

文件资料库会定期的更新,locate查找的话是在资料库中查找,不需要遍历指定的目录,所以搜索速度相比find快很多并且节省系统资源,但是由于文件资料库并不是实时更新的,刚刚建立的文件可能不在资料库中,这个时候是搜索不到的,需要手动更新资料库,命令updatedb命令可以手动更新资料库,文件资料库并不会收录更新/tmp这个临时目录。如果命令不存在则使用yum安装yum install mlocate

选项-i指定此次查找不区分大小写

which:搜索命令所在目录及别名信息

which [命令].

如which ls则是搜索ls命令所在的目录及别名信息

whereis:搜索命令或配置文件所在目录及帮助文档的路径

grep:在文件内容中搜索字符串匹配的行并输出

grep -iv [指定字符串] [文件]

-i:不区分大小写

-v:排除指定字符串

-n:输出行号

-r :在指定目录中递归[查找所有子目录]逐一查找包含某一字串的文件

--color=auto:结果中的关键字用颜色突出显示

如:grep -v ^# /etc/inittab表示排除inittab文件中以#号开头的行并把其他的行输出,^表示开头。

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。