Linux中文件的五个查找命令总结

Linux的查找命令有5个,分别如下:

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

type:用于区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。type命令其实不能算查找命令;

whereis:只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s);

locate:相当于find -name,可快速查找文件;

find:最常用和最强大的查找命令,可以用它找到任何想找的文件。

注意:

通常find不很常用,因为速度慢!

常都是先使用whereis或者locate来检查,当真的找不到了,才用find查找。

是因为whereislocate是利用数据库来查找数据,所以相当快速,而且没有实际查询硬盘,比较节省时间。

whereislocate寻找的数据是由已创建的数据 /var/lib/ 中查找。但是数据库的更新默认是每天更新一次(不同系统可能会有差异),所以当新建文件或删除文件后去查找该文件,whereislocate会告诉你文件“not found”,因为必须更新数据库了。

要手动更新数据库的方法也很简单,直接输入updatedb即可。updatedb命令回去读取/etc/updatedb.conf中的配置,然后去硬盘里面进行查找文件名操作,最后更新整个数据库文件。

下面详细讲解以上5个命令的使用:

一、which:查找系统命令位置

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

which命令的格式如下:

which [-a] command

which命令的参数如下:

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

例子:

[root@www ~] # which ifconfig
/sbin/ifconfig

二、whereis:程序名搜索

whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。

whereis命令的格式如下:

whereis [-bmsu] 文件或目录名

whereis命令的参数如下:

-b 只查找二进制格式的文件

-m 只查找在说明文件manual路径下的文件

-s 只招source源文件

-u 查找不在上述三个选项当中的其他特殊文件

例子:

[root@www ~] # whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
[root@www ~] # whereis -m ifconfig
ifconfig: /usr/share/man/man8/ifconfig.8.gz

三、locate:利用数据库查找文件

locate命令的格式如下:

locate [-ir] keyword

locate命令的参数如下:

-i:忽略大小写差异;

-r:后面可接正则表达式的实现方式。

例如:

[root@www ~] # locate passwd
/etc/passwd
/etc/passwd-
/etc/news/passwd.nntp
/etc/pam.d/passwd

四、find:查找任何文件

find命令的格式如下:

find [PATH] [option] [action]

4.1 find参数:基于文件名的搜索

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

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

[root@www ~] # find / -name passwd

查找文件名为passwd的文件。

4.2 find参数:基于文件大小的搜索

与文件大小有关的参数如下:

-size SIZE:查找文件大小刚好等于SIZE的文件;

-size -SIZE:查找文件大小大于SIZE的文件;

-size +SIZE:查找文件大小小于SIZE的文件。

其中,SIZE的单位有:

c —— byte,字节;

w —— 字(2字节);

b —— bit,块(512字节);

k —— 千字节;

M —— 兆字节;

G —— 吉字节。

例子:

[root@www ~] # find . -type f -size +10k
搜索大于10KB的文件
[root@www ~] # find . -type f -size 10k
搜索等于10KB的文件

4.3 find参数:基于文件类型的搜索

与文件类型有关的参数如下:

-type TYPE:查找文件的类型为TYPE的文件。

TYPE的参数列表有:

f :普通文件;

l :符号连接;

d :目录;

c :字符设备;

b :块设备;

s :套接字;

p :FIFO。

例子:

[root@www ~] # find /var -type s

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

4.4 find参数:基于目录深度的搜索

与目录深度有关的参数如下:

-maxdepth n:n为数字,表示向下最大深度限制为n;

-mindepth n:n为数字,搜索出深度距离当前目录至少n个子目录的所有文件。

例子:

[root@www ~] # find . -maxdepth 3 -type f
向下最大深度限制为3
[root@www ~] # find . -mindepth 2 -type f
搜索出深度距离当前目录至少2个子目录的所有文件

4.5 find参数:基于时间进行搜索

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

-mtime n: n为数字,列出在n天之前的“一天之内”被更改过的文件名;

-mtime +n:列出在n天之前(不含第n天本身)被更改过的文件名;

-mtime -n:列出在n天之内(不含第n天本身)被更改过的文件名;

-newer file:file为一个存在的文件,列出比file还要新的文件名。

例子:

[root@www ~] # find /etc -mtime 0
查找从现在开始到24小时前,/etc目录下所有改动过内容的文件都会被列出来。
[root@www ~] # find /ect -newer /etc/passwd
查找/etc目录下,所有比/etc/passwd文件更新的文件。

4.6 find参数:基于用户或用户组名进行搜索

与用户或用户组名有关的参数如下:

-uid n:n为数字,表示用户的UID;

-gid n:n为数字,表示用户的GID;

-user name:name为用户账号名称;

-group name:name为用户组名;

-nouser:寻找文件的所有者不存在于/etc/passwd的文件;

-nogroup:寻找文件的所有用户组不存在于/etc/group的文件。

例子:

[root@www ~] # find /home -user root

查找root用户在/home目录下的所有文件。

4.7 find参数:基于文件权限进行搜索

与文件权限有关的参数如下:

-perm mode:查找文件权限刚好等于mode的文件;

-perm +mode:查找文件权限“包含任一mode的权限”的文件;

-perm -mode:查找文件权限“必须要全部包括mode的权限”的文件。

例子:

[root@www ~] # find / -perm +7000

查找必须含有---s--s--t的所有三个权限的文件。

4.8 find命令的其它一些技巧

4.8.1 查找所有长度为零的文件:

find . -empty

4.8.2 查找在n分钟内被修改的文件:

find . -cmin -60

查找一个小时内文件状态改变的文件(也就是60分钟内)。

4.8.3 仅仅查找非隐藏的文件(不显示隐藏文件):

find . \( ! -regex ".*/\..*" \)

显示当前目录及其子目录下的文件,并且只列出非隐藏文件。

五、type:显示指定命令的类型

type命令用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令。

type命令格式如下:

 type [option] [commond]

type命令的参数有:

-t:输出“file”、“alias”或者“builtin”,分别表示给定的指令为“外部指令”、“命令别名”或者“内部指令”;

-p:如果给出的指令为外部指令,则显示其绝对路径;

-a:在环境变量“PATH”指定的路径中,显示给定指令的信息,包括命令别名。

命令的类型可能有如下几种:

alias: 别名;

keyword: 关键字,Shell保留字;

function: 函数,Shell函数;

builtin: 内建命令,Shell内建命令;

file: 文件,磁盘文件,外部命令;

unfound: 没有找到。

例子:

[root@www ~] # type cd
cd is a shell builtin
[root@www ~] # type date
date is /bin/date
[root@www ~] # type mysql
mysql is /usr/bin/mysql
[root@www ~] # type nginx
-bash: type: nginx: not found
[root@www ~] # type if
if is a shell keyword

总结

以上就是这篇文章的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

(0)

相关推荐

  • linux find下如何统计一个目录下的文件个数以及代码总行数的命令

    今天遇到如题所示问题,网上捣鼓半天,有收获 知道指定后缀名的文件总个数命令:        find . -name "*.html" | wc -l 知道一个目录下代码总行数以及单个文件行数:        find . -name "*.html" | xargs wc -l

  • linux命令之find命令简单概述

    Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限. 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统). 1.命令格式: find pat

  • Linux中 find查找命令用法详解

    Linux下查找文件的命令有两个,分别是locate 和 find. locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库.简单介绍下它的两个选项. #locate -i        //查找文件的时候不区分大小写 比如:locate  –i   passwd -n      

  • linux find命令之xargs简单概述

    在使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行.但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误.错误信息通常是"参数列太长"或"参数列溢出".这就是xargs命令的用处所在,特别是与find命令一起使用. find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样.这样它可以先处理最先获取的一

  • linux的一个find命令配合rm删除某天前的文件方法

    语句写法:find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \; 例1: 将/usr/local/backups目录下所有10天前带"."的文件删除 find /usr/local/backups -mtime +10 -name "*.*" -exec rm -rf {} \; find:linux的查找命令,用户查找指定条件的文件 /usr/local/backups:想要进行清理的任意目录 -

  • 每天一个linux命令之locate 命令

    locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案.其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了.在一般的 distribution 之中,数据库的建立都被放在 crontab 中自动执行. 1.命令格式: Locate [选择参数] [样式] 2.命令功能: locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,locat

  • linux使用find和crontab命令定期清理过期文件

    crontab 命令 crontab 命令是 Linux 中用来设定重复执行命令或脚本的工具.它能够在指定的时间段内,按照需求以某一时间间隔执行命令或脚本. crontab 的基本用法 crontab [-u <user>] [-e|-l|-r] crontab <filename> crontab <filename> 可以读入一个以 crontab 语法书写的文件,并依照文件内的指示执行定时任务.与此同时,crontab -l 能够在标准输出上列出当前用户所有的定时

  • 详解Linux中两个查找命令locate和find教程

    Linux中有很多查找命令,今天主要讲解locate,find两个命令. 1.locate locate命令其实是"find -name"的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息.Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件.为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库. (

  • Linux中文件的五个查找命令总结

    Linux的查找命令有5个,分别如下: which:在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果: type:用于区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的.如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令.type命令其实不能算查找命令: whereis:只能用于程序名的搜索,而且只搜索二进制文件(参数-b).man说明文件(参数-m)和源代码文件(参数-s): locate:相当于find

  • 统计Linux 中文件和文件夹/目录的数量(示例代码)

    嗨,伙计们,今天我们再次带来一系列可以多方面帮助到你的复杂的命令. 通过操作命令,可以帮助您计数当前目录中的文件和目录.递归计数,统计特定用户创建的文件列表等. 在本教程中,我们将向您展示如何使用多个命令,并使用 ls.egrep.wc 和 find 命令执行一些高级操作. 下面的命令将可用在多个方面. 为了实验,我打算总共创建 7 个文件和 2 个文件夹(5 个常规文件和 2 个隐藏文件). 下面的 tree 命令的输出清楚的展示了文件和文件夹列表. # tree -a /opt /opt ├

  • 详解Linux中zip压缩和unzip解压缩命令及使用详解

    下面给大家介绍下Linux中zip压缩和unzip解压缩命令详解 1.把/home目录下面的mydata目录压缩为mydata.zip zip -r mydata.zip mydata #压缩mydata目录 2.把/home目录下面的mydata.zip解压到mydatabak目录里面 unzip mydata.zip -d mydatabak 3.把/home目录下面的abc文件夹和123.txt压缩成为abc123.zip zip -r abc123.zip abc 123.txt 4.把

  • Linux中文件权限目录权限的意义及权限对文件目录的意义

    linux中目录与文件权限的意义 一.文件权限的意义 r:可以读这个文件的具体内容: w:可以编辑这个文件的内容,包括增加删除文件的具体内容: x:文件就具有了可执行的权限-------注意:这里和window不一样,在win中,文件的可执行权限是通过扩展名表现出来的,如exe.bat等,但是在linux中文件的可执行权限是通过这个x决定的,与文件名没有什么关系. 二.目录权限的意义 r:可以查看此目录下的完整文件列表信息. w:可以对此目录下的所有的文件及目录进行相关的更改,也就是可以更改这个

  • Linux中文件描述符fd与文件指针FILE*互相转换实例解析

    本文研究的主要是Linux中文件描述符fd与文件指针FILE*互相转换的相关内容,具体介绍如下. 1.文件描述符fd的定义:文件描述符在形式上是一个非负整数.实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表.当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符.在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开.但是文件描述符这一概念往往只适用于UNIX.Linux这样的操作系统. 2.文件指针FILE定义说明文件指针的一般形式为: FI

  • python修改linux中文件(文件夹)的权限属性操作

    今天生成的对流云团路径图片放在linux下,文件的权限都是rw,没有x,后续的别人的程序调用不了,这里附上对三个属性的简单解释,有不够的欢迎大家补充 Linux的权限不是很细致,只有RWX三种 r(Read,读取):对文件而言,具有读取文件内容的权限:对目录来说,具有浏览目录的权限. w(Write,写入):对文件而言,具有新增,修改,删除文件内容的权限:对目录来说,具有新建,删除,修改,移动目录内文件的权限. x(eXecute,执行):对文件而言,具有执行文件的权限:对目录了来说该用户具有进

  • 对python中list的五种查找方法说明

    Python中是有查找功能的,五种方式:in.not in.count.index,find 前两种方法是保留字,后两种方式是列表的方法. 下面以a_list = ['a','b','c','hello'],为例作介绍: string类型的话可用find方法去查找字符串位置: a_list.find('a') 如果找到则返回第一个匹配的位置,如果没找到则返回-1,而如果通过index方法去查找的话,没找到的话会报错. 补充知识:Python中查找包含它的列表元素的索引,index报错!!! 对于

  • Linux中文件查找技术大全

    每一种操作系统都是由成千上万个不同种类的文件所组成的.其中有系统本身自带的文件,用户自己的文件,还有共享文件等等.我们有时候经常忘记某份文件放在硬盘中的哪个地方.在微软的WINDOWS操作系统中要查找一份文件是相当简单的事情,只要在桌面上点击"开始"-"搜索"中就能按照各种方式在本地硬盘上,局域网络,甚至在INTERNET上查找各种文件,文档. 可是使用Linux的用户就没有那么幸运了,在Linux上查找某个文件确实是一件比较麻烦的事情.毕竟在Linux中需要我们使

  • Linux中文件查找方法大全

    每一种操作系统都是由成千上万个不同种类的文件所组成的.其中有系统本身自带的文件,用户自己的文件,还有共享文件等等.我们有时候经常忘记某份文件放在硬盘中的哪个地方.在微软的Windows操作系统中要查找一份文件是相当简单的事情,只要在桌面上点击"开始"-"搜索"中就能按照各种方式在本地硬盘上,局域网络,甚至在INTERNET上查找各种文件,文档. 可是使用Linux的用户就没有那么幸运了,在Linux上查找某个文件确实是一件比较麻烦的事情.毕竟在Linux中需要我们使

  • linux中目录与路径常见相关命令

    linux中目录与路径常用命令 相对路径与绝对路径 绝对路径:路径的学法一定由根目录/写起.如/user/share/doc. 相对路径:目录不由/写起.如/user/share/doc要切换到/user/share/man时可以写为"cd  ../man",这样就是行对路劲的写法. 目录的相关操作 .  代表此层目录 .. 代表上层目录 -代表前一个工作目录     ~代表"目前用户"所在的主文件夹 ~user1 代表user1这个用户的主文件夹 常见的处理目录命

随机推荐