文章目录

  • 前言
  • find命令
    • 命令格式:
    • 常用选项:
    • 举例使用
  • locate命令
    • 命令格式
    • 使用实例
  • whereis命令
    • 使用过程:
  • which命令
  • type命令

前言

在linux系统中一切皆文件,此时我们想要从海量的文件中快速定位中我们想要的文件来,需要指定的命令来操作。以下为收集的各个命令,以及其优劣,使用方式。

find命令

centos下:rpm包findutils-4.5.11-3.el7.x86_64
find是最常用也是最强大的查找命令,它可以查找任何类型的文件。

命令格式:

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

常用选项:
  • -name:按文件名来查找文件
  • -user:按照文件的属主来查找文件
  • -group:按照文件所属的组来查找文件
  • -perm:按照文件权限来查找文件
  • -prune:不在当前指定目录中查找
举例使用

已知文件stdio.h存放在/usr大目录下的多个子目录,cd /usr目录下
find -name "stdio.h" 表示在当前目录查找文件名称为stdio.h的文件

find . -path ./include -prune -o -name "stdio.h" 在当前目录查及其子目录查找名称为stdio.h的文件,但是跳过include目录;
这里的-o参数表示或关系,即两者中只要有一个表达式满足true即可输出;
-a-not,-a表示只要有一个表达式不满足则不输出,-not表示对查找的结果进行取反

find . -path ./include -o -name "stdio.h" -print 将匹配到的内容文件输出到标准输出中

find / -user ceph 查找文件所有者为ceph的文件
find / -nouser -a -nogroup 查找系统中不属于任何人,任何用户组的文件(对于该部分文件需要保持警惕)

find /usr -mtime -4查找文件更新日时在距现在时刻4天以内的文件
find /usr -mtime +4 查找文件更新日时在距现在时刻5天以上的文件
find /usr -mtime 4查找文件更新日时在距现在时刻4天以上5天以内的文件

find / -type [c] 根据文件属性进行查找
其中[c]包括如下属性:

  • p 管道文件/run/systemd/initctl/fifo
  • b block块设备文件,类似与/dev/sdb磁盘盘符这种
  • c 字符设备,类似于/dev/tty63
  • d directory 目录文件
  • f regular file 普通文件
  • l symbolic link 链接文件
  • s socket 套接字文件

find / -size +10M 按照文件大小进行查找,+表示大于10M的文件,-表示小于10M的文件,同时还支持K,G,b(512B的块大小)的单位查找

locate命令

centos下:rpm包为mlocate-0.26-5.el7.x86_64
locate命令实际是"find -name"的另一种写法,但是查找方式跟find不同,它比find快得多。
因为它不搜索具体目录,而是在一个数据库(/var/lib/mlocate/mlocate.db)中搜索指定的文件。次数据库含有本地文件的所有信息,此数据库是linux系统自动创建的,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,默认情况下为每天更新一次,所以用locate命令你搜索不到最新更新的文件,除非你在用locate命令查找文件之前手动的用updatedb命令更新数据库。

命令格式

locate [OPTION]... [PATTERN]...

主要使用的参数含义如下:

  • -A 打印所有匹配到的文件
  • -b 精确匹配需要查找的文件,即如果文件命中包含我们要查找的则不打印
  • -c 仅打印匹配到文件个数
  • -d --database DBPATH 指定自己的文件数据库
  • -e 打印当前系统存在的想要查找的文件
  • -i 忽略匹配出来的文件的差异
  • -m 已经被忽略了,为了向后兼容
  • -l count 或者 -n count 限制输出的条数
  • -r 支持普通的正则匹配,类似locate -r ceph-osd.[0-9] 查找ceph-osd.后面有一个数字的文件
  • -w 精确匹配,默认不加也是精确匹配
使用实例

这里关于参数详细的使用就不多说,以上都已经提到
这里简单说一下locate的正则匹配,基本的正则符号参考正则符号
举例:
locate -r ceph-osd.[0-9].log$ 查找以包含ceph-osd的字符串,且在ceph-osd.和.log之间有一个数字,且以log字符串结尾的文件

我们在使用locate的很多时候发现一个新的文件locate不到,关于locate命令的基本查找过程上面也已经提到,因为locate的文件获取是从操作系统定时更新的数据库中获取,但是新的文件可能还没有更新到数据库(还没有被系统设置的定时任务去更新数据库),此时我们需要手动更新以下该数据库。
关于mlocate.db数据库的更新任务在路径为/etc/cron.daily/mlocate中,内容如下

#!/bin/sh
nodevs=$(< /proc/filesystems awk '$1 == "nodev" && $2 != "rootfs" { print $2 }')
renice +19 -p $$ >/dev/null 2>&1
ionice -c2 -n7 -p $$ >/dev/null 2>&1
/usr/bin/updatedb -f "$nodevs"

我们做出如下测试

[root@node2 ~]# echo "i am a man" >test.cron
[root@node2 ~]# locate test.cro
[root@node2 ~]# updatedb  手动跟新数据库
[root@node2 ~]# locate test.cron   手动更新即可发现我们创建的文件已经存在
/root/test.cron

whereis命令

centos下的rpm包util-linux-2.23.2-26.el7.x86_64
whereis命令只能用于搜索二进制文件(-b)、源代码文件(-s)、说明文件(-m)。如果省略参数则返回所有的信息
使用起来也是非常简单

使用过程:
[root@node2 ~]# whereis locate
locate: /usr/bin/locate /usr/share/man/man1/locate.1.gz
[root@node2 ~]# whereis -b locate
locate: /usr/bin/locate
[root@node2 ~]# whereis -m locate
locate: /usr/share/man/man1/locate.1.gz
[root@node2 ~]# whereis -s locate
locate:[root@node2 ~]#

该命令能够方便编译机上的组件以及对应源码的查找

which命令

which命令是在PATH变量指定的路径中搜索指定的系统命令的位置。用echo $PATH可显示当前PATH变量的值

[root@node2 ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/root/perl5/bin:/b_iscsi/bn_cli:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@node2 ~]# which locate
/bin/locate

type命令

type命令主要用于区分一个命令到底是shell自带的还是外部独立的二进制文件提供的。如果是shell自带的则会提示此命令为shell buildin,否则会列出命令的位置。例如:cd为shell自带的命令,当用which查找时,which会按照PATH变量设置的路径进行搜索,如果不是shell自带命令,则结果会显示no cd in...;用type cd则显示cd为shell buildin命令。ssh不是shell自带命令,用type时会显示ssh的路径。

[root@node2 ~]# type cd
cd is a shell builtin
[root@node2 ~]# type find
find is hashed (/bin/find)

linux 文件查找命令集:find,locate,wheres,which,type相关推荐

  1. linux文件查找命令find,locate

    简介 vi : visual interface, 可视化接口.vim(VI IMproved) vim编辑器:文本编辑器.文本:纯文本,ASCII text; unicode; 文本编辑器种类: 行 ...

  2. linux进入文件全文搜索命令,Linux 文件查找命令详解

    大家好,我是"孤云幕雨":祝大家中秋快乐,今天给大家带来的是<Linux文件查找命令> 一.locate:依赖于事先构建的索引 v依赖于事先构建的索引:索引的构建是在系 ...

  3. Linux文件查找命令find,xargs详述

    Linux文件查找命令find,xargs详述 总结:zhy2111314 来自:LinuxSir.Org 整理:北南南北 摘要: 本文是find 命令的详细说明,可贵的是针对参数举了很多的实例,大量 ...

  4. Linux文件查找命令find用法整理(locate/find)

    Linux文件查找查找主要包括:locate和find 1.locate 用法简单,根据数据库查找,非实时,用法: locate FILENAME 手动更新数据库(时间可能较长) updatedb 2 ...

  5. Linux文件查找命令具体解释-which whereis find locate

    原创BLog.转载请注明出处 http://blog.csdn.net/hello_hwc? viewmode=contents which命令 首先查看man which的说明 which - sh ...

  6. linux下查找命令which/whereis/locate/find的对比和总结

    linux下的查找命令有很多,常用的有which.whereis.locate.find.那么这4个命令之间各自有什么特点,又有什么区别?什么时候该用哪个才最合适呢?详细不少人没法给出一个精确的答案, ...

  7. 【转】Linux的五个查找命令:find,locate,whereis,which,type

    原文网址:http://www.ruanyifeng.com/blog/2009/10/5_ways_to_search_for_files_using_the_terminal.html 最近,我在 ...

  8. Linux基础(十一)--Linux文件查找命令Find详解

    本文详细介绍了Linux中Find命令的相关知识 在文件系统中,我们常常会去查找某个文件,而在Linux中locate和find都是用于查找文件的. 其中locate命令是非实时查找,它会根据数据库进 ...

  9. linux文件查找命令

    Linux下文件搜索.查找.查看命令 1.最强大的搜索命令:find 查找各种文件的命令 2.在文件资料中查找文件:locate 3.搜索命令所在的目录及别名信息:which 4.搜索命令所在的目录及 ...

最新文章

  1. python网页模板_python-找不到HTML模板
  2. 一个 union all 的all
  3. 视频软件会声会影支持哪些视频格式?
  4. gdrive无限网盘挂载systemd文件
  5. edg击败we视频_lpl2018春季赛2月4日WEvsEDG比赛视频:EDG2:1击败WE
  6. php手机编程ios,在iOS上实现生产力级别PHP编程
  7. 2015武汉大学计算机学院录取,2015年武汉大学计算机专业研究生录取名单
  8. linux mint回收站,Autotrash:定时自动删除旧垃圾的命令行工具
  9. C语言基础入门48篇_30_二维数组的定义与使用(二维数组的定义:type 数组名[行][列]、二维数组的初始化、二维数组的引用)
  10. 用php计算身体质量指数,BMI计算器,身体质量指数BMI在线计算
  11. 预算三万配一台电脑,要全套,包括显示器,音箱,耳机,键盘鼠标这些,怎么搭配才好?
  12. 【二叉树】根据后续和中序遍历输出前序遍历 [建树+非建树做法]
  13. java 自动转 golang_JAVA转Golang
  14. udt4 VS udt gateway
  15. Python 中的Path类
  16. python解压文件中哪个是安装包_python解压文件格式的基本方法
  17. HIDL服务死亡通知实例 hidl_death_recipient
  18. CSS基本知识点总结
  19. 解密DeathStalker
  20. 【深度强化学习】强化学习的基本概念

热门文章

  1. Android手机指令操作释疑
  2. MySql按日期进行统计(前一天、本周、某一天)[转载]
  3. [导入]实时数据库的经典书
  4. OpenCV+python:直方图的应用(一)
  5. linux定时任务定向到空,Linux 定时任务下 /dev/null 21 相关知识说明
  6. 用python做一个数据查询软件_Python实现功能简单的数据查询及可视化系统
  7. android receiver 通知,android – 来自BroadcastReceiver的呼叫通知
  8. win10系统优化计算机,全面优化win10电脑系统详细教程 | 专业网吧维护
  9. 您有一个新的订单mp3在线_Airtable,不仅仅是强大的在线表格应用,而是一个新物种...
  10. python检查_python设置检查点简单实现