Linux下命令与文件的查询

提纲:本文简单介绍了几个在Linux下查询命令与文件指令,包括which、whereis、locate、find四个指令。
一、为什么要有这些查找指令?
通过对Linux系统的简单了解,我们都知道Linux系统始终遵循的一个思想就是“Linux下一切皆文件”,那么既然Linux系统中有如此多的文件,当我们想对其中的一个文件进行查找或者维护时就必须得快速的找到它,因此Linux系统提供了这几个查询文件的指令,下面我们简单看一下每个指令的具体用法。
二、脚本文件名的查询
1、用到的指令:which
2、脚本文件:脚本文件将不同的命令组合起来,并按确定的顺序自动连续地执行。脚本文件是文本文件,用户可使用任一文本编辑器来创建脚本文件。
如:我们都知道ls指令,那么如果我们想看一看ls这个指令存放在哪里,就得需要which来进行查询。
3、命令功能:在环境变量PATH的指定路径下查找系统命令的位置,并返回查询后的第一条结果。
4、举例说明
(1)查找ls指令存放的位置
这里写图片描述
通过which指令的查询,我们得到两个结果
结果一:alias,它的意思是别名,也就是输入ls指令相当于后面接的那一串指令
结果二:通过结果二我们可以清楚的看到ls指令存放在文件bin中
(2)查询指令cd的所在位置
这里写图片描述
查询结果显示:no cd in,也就是查询不到,为什么呢?因为which指令是按照环境变量PATH所规范的路径去查询的,而cd是bash内置的命令,所以查询不到。
(3)查询指令ll所在位置
这里写图片描述
通过上图可以发现查询的时候加了一参数“-a”,若加上参数“-a”,则可以列出所有的查询结果,而并非第一个。
5、命令参数
(1)-n  指定⽂文件名⻓长度,指定的⻓长度必须⼤大于或等于所有⽂文 件中最⻓长的⽂文件名。
(2)-p  与-n参数相同,但此处的包括了⽂文件的路径。 (3)-w  指定输出时栏位的宽度。
(4)-v  显⽰示版本信息
这里就不进行一一演示了
三、文件名的查找
可以用三个指令来查找文件名:whereis、locta、find,下面我们将对这三条指令进行简单介绍。
指令whereis
1、指令功能
whereis只能用于程序名的搜索,并且只能搜索以下四种文件
(1)-b 只找二进制形式的文件
(2)-m 只找说明文件下的文件
(3)-s 只找源文件
(4)-u 找默认路径下除以上三种文件外的其他文件
2、指令格式
whereis [-b/-m/-s/-u] 目录或文件名
3、指令的优缺点
优点:查找速度较快,效率比较高,因为Linux系统会将系统内的所有文件都记录在一个数据库文件里面,whereis指令会到该数据库中查找文件,而不像find指令那样去遍历硬盘,因此速度比较快。
缺点:由于数据库文件并不是实时更新(默认一星期更新一次),因此有时用whereis指令还可以查询到已经删除了的文件,或者新建的文件根本找不到,原因就是数据库还没有更新。
4、举例说明
(1)whereis -m passwd
这里写图片描述
我们只能找到跟passwd有关的说明文件名
(2)whereis -b grep
这里写图片描述
通过上面的指令我们可以找到二进制文件(可执行文件)grep的所在位置。
指令locate
1、指令功能
当你忘记某个文件的全名时,可以是有locate指令,直接在后面输入文件的部分名称,便可以得到结果
2、指令格式
locate [-i/-r/-n] keyword
-i 忽略大小写的差异
-r 后面可以接正则表达式的显示方式
-n 最对显示规定个数个文件
3、指令的优缺点
优点:效率较高,因为locate要寻找的数据是由已创建的数据库/var/lib/mlocata里面的数据所查找到的,不用像find那样去硬盘中访问,所以效率较高。
缺点:由于数据库不能实时更新,因此有可能查询不到新的关键字文件名,当然我们可以选择用updatadb指令去更新数据库文件。
指令find
Linux系统中指令find在目录结构中搜索文件,并执行相关操作,find的功能十分强大,接下来我们分类介绍find的功能
1、与时间相关的参数
-atime
-ctime
-mtime
-newer
其中-atime、-ctime、-mtime三个参数的用法相同,我们以-mtime为例来进行介绍
(1)-mtime和-newer的用法介绍
-mtime n
n为数字,意义为在n天之前的一天内被更改的文件;
-mtime +n
查找在n天之前(不含n天本身)被修改的文件;
-mtime -n
查找在n天之内(含n天本身)被修改的文件;
-newer file
file为一个存在的文件,查找更改时间在file之后的文件
-newer file1 ! file2
查找更改时间在file1之后但是在file2之前的文件
(2)命令格式
find [PATH] [option] [action]
(3)举例说明
例一:查找目录code下2天前24小时内被更改的文件
这里写图片描述
注:查找时要输入code目录的路径

例二:查找目录code下3天之前被修改过的文件
这里写图片描述

例三:查找目录code下3天之内(含第三天本身)被修改过的文件
这里写图片描述

例四:查找更改时间在文件dir2之后的文件
注:dir2的路径为/home/admin/code/dir2
这里写图片描述
2、与用户或者用户组相关的参数
(1)对四个参数的简单介绍
-user name
name为用户名,按照文件拥有者来查询文件
-group name
name为用户组名,按照文件所属组来查找文件
-nouser
查找无效属主的文件,即该文件不在/etc/passwd中
-nogroup
查找无效所属组的文件,即该文件不在/etc/group中
(2)命令格式
find [PATH] [option] [action]
(3)举例说明
例一:查找目录code中用户名为admin的文件
这里写图片描述

例二:查找目录code中用户所属组为admin的文件
这里写图片描述

例三:查找目录tmp下的无效属主文件
这里写图片描述

例四:查找目录tmp下的无效属组文件
这里写图片描述
3、与文件权限名称有关的参数
(1)参数介绍
-name filename
查找文件名为filename的文件;
-size [+-]SIZE
查找比SIZE还要大(+)或者小(-)的文件;
c:代表byte,k:代表1024bytes;
-type TYPE
查找类型为TYPE的文件;
-perm mode
查找文件权限刚好等于mode的文件
-perm -mode
查找文件权限全部包含mode的文件
-perm +mode
查找文件权限“包含任一mode”的文件
(2)命令格式
find [PATH] [option] [action]
(3)举例说明
例一:在home目录下查找文件名为myfile的文件
这里写图片描述

例二:在目录code下查找文件类型为d(目录)的文件
这里写图片描述

例三:在admin下查找文件大小大于50k的文件
这里写图片描述

例四:在home下查找文件权限值为664的文件
这里写图片描述

例五:在admin下查找文件权限全部包括001的文件
这里写图片描述

例六:在admin下查找文件权限值包括部分442的文件
这里写图片描述
4、其他参数
(1)参数介绍
-exec commend
commend为其他命令,-exec后面可以接其他命令来处理查询后的结果
-print
将查询结果打印到屏幕上,一般是默认的
-prune
使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune选项将被find忽略
-depth
在查找文件时,首先查找当前目录中的文件,然后再在子目录中查找
-fstype
查找位于某一文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息
-follow
如果find命令遇到符号链接文件,就跟踪链接所指向的文件
-cpio
对匹配的文件使用-cpio命令,将这些文件备份到磁盘文件中
-ok
和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行
(2)命令格式
find [PATH] [option] [action]
(3)举例说明
例一:找出code目录下文件权限为“664”的文件并打印
这里写图片描述
说明1:以上操作是先打开code目录并查看code目录下的权限,然后再用fin指令打印出文件权限为771的文件;
说明2:注意-exec后面跟的是命令ls -l而不是ls -l的别名,在此要注意的是-exec后面不能跟别名;
说明3:{}代表的是find找到的内容,如上图所示,find的查询结果会被放在{}内;
说明4:-exec一直到“\;”是关键字,代表find额外命令的开始(-exec)到结束(\;),在这中间的就是find命令额外的命令。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值