专栏首页无心的梦呓Linux文件查找命令详解

Linux文件查找命令详解

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

目录

0x01 查询命令介绍

0x02 find命令介绍

0x01 查询命令介绍

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

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

which命令

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

whereis命令

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

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

locate命令

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

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

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

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

locate balabala

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

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

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

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

0x02 find命令介绍

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

首先先了解一下date命令

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

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

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

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

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

查询三天以前创建的文件

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

查询第三天创建的文件

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

查询最近三天的文件

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

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

推荐阅读

  1. 这居然是一个RCE漏洞
  2. Linux重定向及反弹shell详解
  3. 部署IIS+PHP+Oracle环境
  4. Linux目录结构及开机流程详解
  5. 部署IIS+PHP+SQL server环境

本文分享自微信公众号 - 无心的梦呓(wuxinmengyi),作者:Vesel无心

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 进制的本质

    什么是进制,进制的本质又是什么,为什么在计算的时候都会把十进制作为中间转换,其实这样的思维完全是错误的,进制的本质并不是我们熟悉的十进制。

    无心的梦呓
  • 算法之二分查找(上)

    二分查找在平时的生活中也挺常用的,比如说以前玩的猜数游戏,每次都取中间数,然后得知是大了,还是小了,这个例子也就是二分查找。

    无心的梦呓
  • 算法之排序(下)

    前面两篇文章说了时间复杂度为O(n2)的冒泡排序、插入排序和选择排序;也说了时间复杂度为O(nlogn)的归并排序和快速排序;这次来说一下时间复杂度为O(n)的...

    无心的梦呓
  • linux\mac 日常入门命令行使用——搜索文件\文件夹

    linux\mac 日常入门命令行使用——搜索文件\文件夹 搜索文件或者文件夹,是一个常见的需求。我们可以用多种命令来实现我们的需求。 find 命令实现搜索 ...

    FungLeo
  • 最实用的Linux命令行使用技巧汇总

    我们每天都会频繁使用Linux命令行,虽然网上关于其使用技巧的资料多种多样,但很多朋友应该并没有进行过实际尝试。因此,今天的文章将对此进行汇总,希望能为大家带来...

    Lemon黄
  • 有人说 Go 语言性能不行,大佬不服,使用 pprof 三步优化代码,性能堪比 C++

    这篇文章部分转自:https://www.cnblogs.com/qcrao-2018/p/11832732.html

    李艺
  • 大疆回应 315,安全漏洞已修复

    镁客网
  • java学习之StringBuffer的增删改查功能

    吾爱乐享
  • Chrome中克服CORS限制

    在使用React+Django REST开发中,前端需要通过jquery获取本地Django API数据,遇到了这样的错误:

    fanzhh
  • Linux基础知识第四讲,文件内容命令

    cat 跟 more 命令 cat 123.txt more 123.txt 在123.txt内容不多的情况下,一样显示. 如果123.txt文件内容.超...

    IBinary

扫码关注云+社区

领取腾讯云代金券