文档章节

Linux文件查找命令详解

无心的梦呓
 无心的梦呓
发布于 10/22 08:48
字数 1441
阅读 28
收藏 0

对于文件查找,我们最好用的还是属于find命令了,在说find命令之前,先把另外几个查找命令介绍一下。

目录

0x01 查询命令介绍

0x02 find命令介绍

0x01 查询命令介绍

在介绍之前,首先先了解一个特殊变量——PATH

PATH下存放着命令所在的路径,我们在执行命令的时候先会在PATH变量中从前到后挨个路径进行查找,找到一条之后就直接停止了,所以就需要把想要先生效的路径放到前面,每一个路径中间使用冒号进行分隔

file

which命令

通过which命令,我们可以找到某一个命令所在的位置,它是通过PATH路径进行查询的

file

whereis命令

whereis命令也可以跟which一样搜索路径,但是他还会搜索一些其他的内容,它也是通过PATH路径进行查询的

file

如果只想搜索二进制命令的话,需要增加 -b 参数

file

locate命令

locate也能查询命令的相关路径以及帮助等,但是它不是从PATH路径中进行遍历的,它是从Linux中的一个数据库mlocate.db进行查询的,mlocate.db数据库位于/var/lib/mlocate/mlocate.db,由于它所展示的内容太多,所以这里我使用 -n 参数来指定显示的行数

file

那我们再举一个例子来进行查询

我们在root目录下创建一个balabala.txt的文件

file

然后使用下列命令来进行查询

locate balabala

file

明明存在这个文件为什么查不到呢?

这是由于locate进行查找是在mlocate.db数据库进行查找的,但是我们刚刚创建的这个文件并不在这个数据库中,所以我们需要使用updatedb进行更新数据库

file

在更新完后就可以正常查询到了,经过查询可以得知updatedb会每天自动执行一次

file

但是这个命令我们一般是不会用到的

0x02 find命令介绍

与上面的几个命令相比,find的速度是最慢的,因为find是从硬盘里进行查找的,但是find命令也是我们最常用的一个命令,在寻找我们想要的文件时是最快捷的。

对于find命令的使用有一个大致的公式

find 要查找的位置 [限制条件] 要查找的文件名

举个例子,从根目录下寻找所有的文件名中包含balabala的文件

file

如果想在查询完成之后,再接着对它执行一些命令的话,在后面再加上 -exec参数就可以了

find / -type f -name "*balabala*" -exec ls -l {} \;

file

-exec参数的后面跟上需要执行的command命令就可以了,最后以分号作为结束的标志,但是考虑到各个系统中的分号可能会代表不同的意义,所以加上了反斜杠进行转义。

其中花括号的含义是代表find命令所查询到的内容,并且花括号两边都是需要有空格的

这条命令还有一种等价的写法,那就是利用管道xargs

xargs有两个作用,一个就是加-n参数对内容进行分组,另一个作用就是获取前一条命令的输出,然后作为输入传给后面的命令,这个听起来跟管道符是一样的,但是如果没有xargs和管道符的配合是不能实现部分命令的执行的。

看一下后面的这个例子就明白了

file

如果没有管道符和xargs的配合,后面的命令将直接是在当前目录下直接执行,也就是说从管道符过来的数据,ls根本没有理会,而是按照自己的意愿执行了原本的功能。

顺便再把xargs的分组功能介绍一下

file

再举一个例子来理解一下上面的这个内容

我们查找一下当前目录下的所有以 .txt 来结尾的文件,然后并将其内容进行输出

file

我们也可以按照修改时间对文件进行查找,加入 -mtime 参数就可以了

为了方便find的按时间查找,我们用下面的命令来生成一批文件

首先先了解一下date命令

file

如果想要修改时间的话,我们可以使用 date -s 来修改时间,但是绝对不建议大家这样改,这样可能会导致某些功能出现问题。

然后我们生成一批文件,从十月十五号到十月二五号每天创建一个文件

注意后面的时间都是以今天是十月二十号作为标准的

for n in `seq 15 20`;do date -s "2019/10/$n";touch test_$n.txt;done

file

file

我们接着说find命令的按时间查询

查询三天以前创建的文件

find . -type f -name "*.txt" -mtime +3

file

查询第三天创建的文件

find . -type f -name "*.txt" -mtime 3

file

查询最近三天的文件

find . -type f -name "*.txt" -mtime -3

file

常用到的查找命令就是这些了,如果有其他需要的话,再查看帮助文件就可以了。

本文由博客一文多发平台 OpenWrite 发布!

© 著作权归作者所有

无心的梦呓
粉丝 0
博文 37
码字总数 43700
作品 0
东城
私信 提问
每天一个linux命令目录

开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每天一个linux命令。学习的主要参考资料为: 1.《鸟哥的linux私房菜》 2.http://codingstandards.iteye.com/blog/786653...

长平狐
2013/06/17
256
0
Docker 宿主机定时清除容器的运行日志

docker 宿主机定时清除容器的运行日志 一般docker容器都是最小化安装,不仅如此系统定时器相关的服务也不存在,自己去安装也很麻烦,故此直接使用宿主机的定时器即可。 一、在容器中编写清除...

yope
2018/07/07
1K
0
Linux中find命令-path -prune用法详解

在Windows中可以在某些路径中查找文件,也可以设定不在某些路径中查找文件,下面用Linux中的find的命令结合其-path -prune参数来看看在Linux中怎么实现此功能。 假如在当前目录下查找文件,且...

yolks丶
2018/06/29
0
0
查看linux 下已经安装的软件包信息

RPM使用详解 在Linux 操作系统中,有一个系统软件包,它的功能类似于Windows里面的“添加/删除程序”,但是功能又比“添加/删除程序”强很多,它就是 Red Hat Package Manager(简称RPM)。此工...

欢168
2012/04/14
81
1
RHCE认证视频笔记汇总(8月2日更新……)

在CentOS5上搭建全功能LAMP环境  http://www.boobooke.com/v/bbk1240  http://www.boobooke.com/v/bbk1241  http://www.boobooke.com/v/bbk1242 如何在Linux上通过Wine来安装运行QQ   h......

羽飞
2009/08/02
682
0

没有更多内容

加载失败,请刷新页面

加载更多

BigDecimal 去后面无用的0的方法

BigDecimal a=new BigDecimal("0.1000"); System.out.println(a.stripTrailingZeros().toPlainString());...

xiaodong16
38分钟前
5
0
JAVA--高级基础开发

[集合版双色球] 十二、双色球规则:双色球每注投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1—33中选择;蓝色球号码从1—16中选择;请随机生成一注双色球号码。(要求同色号码...

李文杰-yaya
昨天
19
0
聊聊rocketmq broker的CONSUMER_SEND_MSG_BACK

序 本文主要研究一下rocketmq broker的CONSUMER_SEND_MSG_BACK CONSUMER_SEND_MSG_BACK rocketmq/common/src/main/java/org/apache/rocketmq/common/protocol/RequestCode.java public class......

go4it
昨天
3
0
API常见接口(下)

system类 StringBuilder和StringBuffer 包装类 1.System类 (java.lang包中) 提供了大量的静态方法,可以获取与系统相关的信息或系统级操作。 常用方法: public static long currentTimeMi...

Firefly-
昨天
4
0
MySQL系列:一句SQL,MySQL是怎么工作的?

对于MySQL而言,其实分为客户端与服务端。 服务端,就是MySQL应用,当我们使用net start mysql命令启动的服务,其实就是启动了MySQL的服务端。 客户端,负责发送请求到服务端并从服务端获取数...

杨小格子
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部