数据库的Linux搜索文件有几种高效命令?

    作者:课课家教育更新于: 2019-09-08 21:51:02

    Linux搜索文件的5个高效命令的正确使用方法。索引,使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。 在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快。

    索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。

     1. 前言

    本文主要讲解linux系统里最常用的5个高效搜索文件的命令,他们分别是which,type,whereis,locate,find

    数据库的Linux搜索文件有几种高效命令_数据库_数据管理_数据结构_课课家

    他们的使用分别是:

    • which:在PATH路径变量中,搜索系统命令对应文件的目录位置
    • type:用于显示哪些命令是shell自带的,哪些命令是外部命令。如何使用选项-p,会显示外部命令的保存位置,相当于which命令。
    • whereis:只能用于搜索程序名,选项-b用于搜索二进制文件,即编译好的文件、选项-m用于搜索用户手册文件和选项-s用于搜索源代码文件
    • locate:基于数据库缓存信息显示文件位置,并不是实时查找,如果想要实时查找,使用前需要手动更新数据库。
    • find:Linux系统最常用和最强大的查找命令,用于实时查找硬盘上的文件。

    注意:

    在这5个命令中,find命令是最慢的,原因是它可以搜索任意类型的文件,并且是实时查找的。

    通常先使用whereis或者locate查找文件,如果没有找到目标文件,再用find命令

    这是因为whereis与locate通过查询数据库来定位文件路径的,所以相当快速,比较节省时间。而find命令是通过实时搜索硬盘的文件的。

    locate命令是mlocte软件套件的一个子命令集,通过以下命令安装mlocate套件

    1. [root@CentOS7 ~]# yum -y install mlocate 

    总下载量:113 k

    安装大小:379 k

    Downloading packages:

    mlocate-0.26-8.el7.x86_64.rpm | 113 kB 00:00:00

    Running transaction check

    Running transaction test

    Transaction test succeeded

    Running transaction

    正在安装 : mlocate-0.26-8.el7.x86_64 1/1

    验证中 : mlocate-0.26-8.el7.x86_64 1/1

    已安装:

    mlocate.x86_64 0:0.26-8.el7

    完毕!

    执行以下命令手动更新数据库:

    1. [root@CentOS7 ~]# updatedb 

    updatedb命令通过读取/etc/updatedb.conf中的配置,然后搜索整个Linux文件系统的文件,然后更新数据库文件,查找文件直接读取该数据库

    2. 搜索系统命令位置-`which`命令

    which命令在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。

    which命令的格式如下:

    1. which [-a] command 

    which命令的参数如下:

    • -a:将所有由PATH目录中可以找到的命令均列出来,而不是只列出第一个被找到的命令。

    使用案例,通过which命令查找wget程序文件所在的目录位置:

    1. [root@zcwyou ~]# which wget 

    /usr/bin/wget

    可以看出wget的程序位置

    3. 搜索程序相关的文件命令`whereis`

    whereis命令的使用格式如下:

    1. whereis [-bmsu] 文件或目录名 

    whereis命令的选项作用如下:

    选项备注-b只搜索程序二进制文件-m只搜索程序对应的使用手册-s只搜索程序源文件-u查找不在上述三个选项当中的其他特殊文件

    使用locate搜索案例:

    搜索locate这个命令程序所在的位置:

    1. [root@CentOS7 ~]# whereis locate 

    搜索结果如下,可以看出locate程序的程序文件和手册文件所在的位置

    locate: /usr/bin/locate /usr/share/man/man1/locate.1.gz

    搜索chmod程序的使用手册文件

    1. [root@zcwyou ~]# whereis -m chmod 

    chmod: /usr/share/man/man1/chmod.1.gz

    搜索程序相关的文件命令之whereis

    4. 通过`locate`命令搜索文件

    locate命令的格式如下:

    1. locate [-ir] keyword 

    locate命令的参数如下:

    • -i:忽略大小写差异;
    • -r:后面可接正则表达式的实现方式。

    使用案例:

    1. [root@zcwyou ~]# locate useradd 

    /etc/default/useradd

    /usr/sbin/luseradd

    /usr/sbin/useradd

    /usr/share/man/de/man8/useradd.8.gz

    /usr/share/man/fr/man8/useradd.8.gz

    /usr/share/man/id/man8/useradd.8.gz

    /usr/share/man/it/man8/useradd.8.gz

    /usr/share/man/ja/man8/useradd.8.gz

    /usr/share/man/man1/luseradd.1.gz

    /usr/share/man/man8/useradd.8.gz

    /usr/share/man/ru/man8/useradd.8.gz

    /usr/share/man/tr/man8/useradd.8.gz

    /usr/share/man/zh_CN/man8/useradd.8.gz

    /usr/share/man/zh_TW/man8/useradd.8.gz

    5. 使用Linux最强大的搜索命令工具`find`

    可以通过find命令查找Linux系统文件上的任何文件

    使用Linux最强大的搜索命令工具find

    find命令的使用格式如下:

    1. find [PATH] [option] [action

    5.1 `find`命令基于文件名的搜索

    与文件名有关的参数如下:

    -name filename:查找文件名为filename的文件。filename可使用正则表达式表示。

    使用案例:

    1. [root@CentOS7 ~]# find / -name sz 

    /usr/bin/sz

    查找文件名为sz的文件。

    5.2 `find`命令之基于文件大小的搜索

    如果想通过文件大小做为搜索条件的话,可以使用以下参数:

    • -size xxx:查找刚好等于xxx大小的文件;
    • -size -xxx:查找大于xxx的文件;
    • -size +xxx:查找小于xxx的文件。

    其中,xxx的单位有:

    -c字节byte;

    -w 表示汉字(2字节);

    -b块(512字节);

    - k表示千字节;

    - M 表示兆字节;

    - G 表示吉字节。

    find使用案例:

    搜索当前目录下大于99KB的文件

    1. [root@zcwyou ~] # find . -type f -size +99k 

    搜索当前目录下等于88KB的文件

    1. [root@zcwyou ~] # find . -type f -size 88k 

    5.3 `find`命令之基于文件类型的搜索

    与文件类型有关的选项如下:

    选项-type 表示定义查找目标文件的类型。

    TYPE的参数列表有:

    -f :普通文件;

    -l:符号连接;

    -d:目录;

    -c :字符设备;

    -b :块设备;

    -s :套接字;

    - p:FIFO。

    使用案例:

    查找/proc目录下所有类型为socket的文件。

    1. [root@zcwyou ~] # find /proc -type s 

    5.4 `find`命令之基于文件时间进行搜索

    与时间有关的参数共有 -atime、-ctime、-mtime。下面以-mtime说明:

    • -mtime n: n为数字,列出在n天之前的“一天之内”被更改过的文件名;
    • -mtime +n:列出在n天之前(不含第n天本身)被更改过的文件名;
    • -mtime -n:列出在n天之内(不含第n天本身)被更改过的文件名;
    • -newer file:file为一个存在的文件,列出比file还要新的文件名。

    下面以几个实际写法解释此用法:

    -mtime +2,表示2天以外的,即从距离当前时间的2天前开始算起,往更早的时间推移。

    -mtime +1,表示1天以外的,即从距当前时间的1天前算起,往更早的时间推移。

    -mtime 1, 距离当前时间第1天的文件,因此以此为时间点。

    使用案例:

    查找从现在开始到24小时前,/etc目录下所有改动过内容的文件都会被列出来。

    1. [root@zcwyou ~] # find /etc -mtime 0 

    查找/etc目录下,所有比/etc/passwd文件更新的文件。

    1. [root@zcwyou ~] # find /ect -newer /etc/passwd 

    其它更多关于find命令的使用方法请参考本站的教程:

    Linux find命令查找文件34个实用案例

    6. 总结

    linux搜索文件的命令必须牢记,系统运维频繁要用到的,掌握这5大命令的用法能极大提升运维效率。

    索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。

课课家教育

未登录

1