[转帖]使用 find 命令在 Linux 上查找文件和目录

使用,find,命令,linux,查找文件,目录 · 浏览次数 : 0

小编点评

**原因:** * **文件搜索工具:** find 是一个用于寻找 POSIX 系统中所有文件的搜索工具。 * **易于使用:** find 具有许多选项,可以用于各种文件查找场景。 * **广泛适用性:** find 在 Linux、 BSD 和 macOS 上均安装且可使用。 * **正则表达式支持:** find 支持正则表达式,允许您使用复杂搜索条件。 * **文件类型限制:** find 可以根据文件类型搜索文件。 * **高效搜索:** find 使用优化技术,可以提高搜索效率。 * **可扩展性:** find 可以扩展以处理大型文件系统。 * **高级功能:** find 支持各种高级选项,例如递归搜索、文件排序和管道操作。

正文

https://linux.cn/article-14071-1.html

 

学习 find 命令的原因有很多。

不管我决心如何组织文件,似乎总有无法找到文件的时候。有时是因为我不记得最初的文件名,其他时候,我知道名字,但我不记得在哪里保存它了。甚至有时我需要一个我最初就没有创建的文件。但是,无论遇到什么困难,我知道在 POSIX 系统 上,总是有 find 命令可以帮助我。

安装 find

find 命令由 POSIX 规范 定义,它创建了一个用于衡量 POSIX 系统的开放标准,这包括 Linux、BSD 和 macOS。简而言之,只要你运行的是 Linux、BSD 或 macOS,那么 find 已经安装了。

但是,并非所有的 find 命令都完全相同。例如,GNU 的 find 命令有一些 BSD、Busybox 或 Solaris 上 find 命令可能没有或有但实现方式不同的功能。本文使用 findutils 包中的 GNU find,因为它很容易获得且非常流行。本文演示的大多数命令都适用于 find 的其他实现,但是如果你在 Linux 以外的平台上尝试命令并得到非预期结果,尝试下载并安装 GNU 版本。

按名称查找文件

你可以借助正则表达式使用完整或部分的文件名来定位文件。find 命令需要你给出想搜索的目录;指定搜索属性选项,例如,-name 用于指定区分大小写的文件名;然后是搜索字符串。默认情况下,搜索字符串按字面意思处理:除非你使用正则表达式语法,否则 find 命令搜索的文件名正是你在引号之间输入的字符串。

假设你的 Documents 目录包含四个文件:Foofoofoobar.txt 和 foo.xml。以下是对 foo 的字面搜索:

  1. $ find ~ -name "foo"
  2. /home/tux/Documents/examples/foo

你可以使用 -iname 选项使其不区分大小写来扩大搜索范围:

  1. $ find ~ -iname "foo"
  2. /home/tux/Documents/examples/foo
  3. /home/tux/Documents/examples/Foo

通配符

你可以使用基本的 shell 通配符来扩展搜索。例如,* 表示任意数量的字符:

  1. $ find ~ -iname "foo*"
  2. /home/tux/Documents/examples/foo
  3. /home/tux/Documents/examples/Foo
  4. /home/tux/Documents/examples/foo.xml
  5. /home/tux/Documents/examples/foobar.txt

? 表示单个字符:

  1. $ find ~ -iname "foo*.???"
  2. /home/tux/Documents/examples/foo.xml
  3. /home/tux/Documents/examples/foobar.txt

这不是正则表达式语法,因此 . 在示例中只表示字母“点”。

正则表达式

你还可以使用正则表达式。与 -iname 和 -name 一样,也有区分大小写和不区分大小写的选项。但不一样的是,-regex 和 -iregex 搜索应用于整个路径,而不仅仅是文件名。这意味着,如果你搜索 foo,你不会得到任何结果,因为 foo 与 /home/tux/Documents/foo 不匹配。相反,你必须要么搜索整个路径,要么在字符串的开头使用通配符:

  1. $ find ~ -iregex ".*foo"
  2. /home/tux/Documents/examples/foo
  3. /home/tux/Documents/examples/Foo

查找近一周修改过的文件

要查找近一周修改的文件,使用 -mtime 选项以及过去的天数(负数):

  1. $ find ~ -mtime -7
  2. /home/tux/Documents/examples/foo
  3. /home/tux/Documents/examples/Foo
  4. /home/tux/Documents/examples/foo.xml
  5. /home/tux/Documents/examples/foobar.txt

查找近几天修改的文件

你可以结合使用 -mtime 选项来查找近几天范围内修改的文件。对于第一个 -mtime 参数,表示上一次修改文件的最近天数。第二个参数表示最大天数。例如,搜索修改时间超过 1 天但不超过 7 天的文件:

  1. $ find ~ -mtime +1 -mtime -7

按文件类型限制搜索

指定查找文件的类型来优化 find 的结果是很常见的。如果你不确定要查找的内容,则不应该使用此选项。但如果你知道要查找的是文件而不是目录,或者是目录而不是文件,那么这可能是一个很好的过滤器。选项是 -type,它的参数是代表不同类型数据的字母代码。最常见的是:

  • d - 目录
  • f - 文件
  • l - 链接文件
  • s - 套接字
  • p - 命名管道(用于 FIFO)
  • b - 块设备(通常是硬盘)

下面是一些例子:

  1. $ find ~ -type d -name "Doc*"
  2. /home/tux/Documents
  3. $ find ~ -type f -name "Doc*"
  4. /home/tux/Downloads/10th-Doctor.gif
  5. $ find /dev -type b -name "sda*"
  6. /dev/sda
  7. /dev/sda1

调整范围

find 命令默认是递归的,这意味着它会在指定的目录中层层搜索结果。这在大型文件系统中可能会变得不堪重负,但你可以使用 -maxdepth 选项来控制搜索深度:

  1. $ find /usr -iname "*xml" | wc -l
  2. 15588
  3. $ find /usr -maxdepth 2 -iname "*xml" | wc -l
  4. 15

也可以使用 -mindepth 设置最小递归深度:

  1. $ find /usr -mindepth 8 -iname "*xml" | wc -l
  2. 9255

下载速查表

本文仅介绍 find 的基本功能,它是一个很好的搜索工具,但对于强大的 Parallel 命令来说,它也是一个非常有用的前端。学习 find 的原因有很多,所以 下载我们免费的 find 速查表 吧,它可以帮助你了解有关该命令的更多信息。

与[转帖]使用 find 命令在 Linux 上查找文件和目录相似的内容:

[转帖]使用 find 命令在 Linux 上查找文件和目录

https://linux.cn/article-14071-1.html 学习 find 命令的原因有很多。 不管我决心如何组织文件,似乎总有无法找到文件的时候。有时是因为我不记得最初的文件名,其他时候,我知道名字,但我不记得在哪里保存它了。甚至有时我需要一个我最初就没有创建的文件。但是,无论遇到

【转帖】【奇淫技巧】Linux | 查找文件,无所遁形

theme: channing-cyan 本文正在参与 “走过Linux 三十年”话题征文活动 在Linux系统上,最常见的操作莫过于处理文本。常见文件操作陈列、查找、排序、格式转换、数据流处理等等。这篇文章着眼于文件查找,分析locate和find命令的使用方法,和运用原理以及缺陷不足。 一、导读

[转帖]linux 批量修改文件格式

将Windows上的shell脚本拷贝到Linux时,脚本的编码格式还是docs,需要改成unix才可执行,在文件不多的情况下可以直接手动更改,但是在脚本文件比较多的时候,手动改起来就太麻烦了,此时就可以使用shell命令批量来进行更改。 批量更改脚本如下: for i in `find . -ty

[转帖]Linux中查找大文件两种姿势

https://rumenz.com/rumenbiji/linux-find-du-max-file.html 使用find命令查找大文件 find命令是Linux系统管理员工具库中最强大的工具之一。它允许你根据不同的标准(包括文件大小)搜索文件和目录。 例如,如果在当前工作目录中要搜索大小超过1

[转帖]Linux中find命令使用示例

https://zhuanlan.zhihu.com/p/99170116 Linux查找命令是类Unix操作系统中最重要且最常用的命令行实用程序之一。 查找命令可以根据你设定的参数匹配的文件指定的条件来搜索和查找文件或目录的列表。 查找可以在多种条件下使用,例如可以按权限,用户,组,文件类型,日期

[转帖]记录几个常用linux命令的使用方法——find、grep、file、which、whereis和压缩命令gzip、bzip2、tar

一、命令1: find、grep、file、which、whereis 1、find 目的:查找符合条件的文件 1)在哪些目录中查找 2)查找的内容 格式: find 目录名 选项 查找条件 举例: 1)find /work -name "test1.txt" 说明: /work 指明了查找的路径-

[转帖]sed中使用变量替换

sed中使用变量替换 1.sed命令使用双引号的情况下,使用$var直接引用 $ echo|sed "s/^/$RANDOM.rmvb_/g" 29328.rmvb_ 如果替换的变量内容中含有/符号则会提示如下错误,如 查找当前目录下的目录文件并将相对路径替换为绝对路径 find . -type f

[转帖]ESXi error: Could not find a trusted signer

24 October 2019河小马VMWareLeave a comment 在ESXi上安装micron 的 msecli vib的时候,有个错误信息显示: Could not find a trusted signer. 解决方案倒是很简单,在你使用的command 后面加上 “–no-sig

[转帖]使用JMX服务监控Java程序性能

https://www.jianshu.com/p/3c3c836c1c20?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation 背景 单机收集服务器需要性能监控和测试。 JMX

[转帖]使用 tc netem 模拟网络异常

https://cizixs.com/2017/10/23/tc-netem-for-terrible-network/ 在某些情况下,我们需要模拟网络很差的状态来测试软件能够正常工作,比如网络延迟、丢包、乱序、重复等。linux 系统强大的流量控制工具 tc 能很轻松地完成,tc 命令行是 ipr