From cc579b38c6984700cb1fd497e10eb46790040acd Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 11 Dec 2021 08:40:17 +0800 Subject: [PATCH] PRF&PUB @MjSeven https://linux.cn/article-14071-1.html --- ...ectories on Linux with the find command.md | 43 ++++++++++--------- 1 file changed, 22 insertions(+), 21 deletions(-) rename {translated/tech => published}/20210909 Find files and directories on Linux with the find command.md (76%) diff --git a/translated/tech/20210909 Find files and directories on Linux with the find command.md b/published/20210909 Find files and directories on Linux with the find command.md similarity index 76% rename from translated/tech/20210909 Find files and directories on Linux with the find command.md rename to published/20210909 Find files and directories on Linux with the find command.md index 576697fddf..3cc6004e5e 100644 --- a/translated/tech/20210909 Find files and directories on Linux with the find command.md +++ b/published/20210909 Find files and directories on Linux with the find command.md @@ -3,29 +3,30 @@ [#]: author: "Seth Kenlon https://opensource.com/users/seth" [#]: collector: "lujun9972" [#]: translator: "MjSeven" -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-14071-1.html" 使用 find 命令在 Linux 上查找文件和目录 ======================================= -学习 find 命令的原因有很多,所以去下载我们免费的 find 备忘录吧,它可以帮助你了解更多有关 find 命令的信息。 -![Magnifying glass on code][1] +> 学习 find 命令的原因有很多。 -不管我决心如何组织文件,似乎总有无法找到文件的时候。有时是因为我不记得最初的文件名,其他时候,我知道名字,但我不记得在哪里保存它了。甚至有时我需要一个我最初就没有创建的文件。但是,无论遇到什么困难,我知道在 [POSIX 系统][2]上,总是有 `find` 命令可以帮助我。 +![](https://img.linux.net.cn/data/attachment/album/202112/11/083907eapzsopvcoc0ooro.jpg) + +不管我决心如何组织文件,似乎总有无法找到文件的时候。有时是因为我不记得最初的文件名,其他时候,我知道名字,但我不记得在哪里保存它了。甚至有时我需要一个我最初就没有创建的文件。但是,无论遇到什么困难,我知道在 [POSIX 系统][2] 上,总是有 `find` 命令可以帮助我。 ### 安装 find -`find` 命令由 [POSIX 规范][3]定义,它创建了一个开放的标准,用于衡量 POSIX 系统,包括 Linux、BSD 和 macOS。简而言之,只要你运行的是 Linux、BSD 或 macOS,那么 `find` 已经安装了。 +`find` 命令由 [POSIX 规范][3] 定义,它创建了一个用于衡量 POSIX 系统的开放标准,这包括 Linux、BSD 和 macOS。简而言之,只要你运行的是 Linux、BSD 或 macOS,那么 `find` 已经安装了。 但是,并非所有的 `find` 命令都完全相同。例如,GNU 的 `find` 命令有一些 BSD、Busybox 或 Solaris 上 `find` 命令可能没有或有但实现方式不同的功能。本文使用 [findutils][4] 包中的 GNU `find`,因为它很容易获得且非常流行。本文演示的大多数命令都适用于 `find` 的其他实现,但是如果你在 Linux 以外的平台上尝试命令并得到非预期结果,尝试下载并安装 GNU 版本。 ### 按名称查找文件 -你可以使用正则表达式使用完整或部分文件名或部分来定位文件。`find` 命令需要你想搜索目录的路径,指定搜索属性选项,例如,`-name` 表示区分大小写。然后是搜索字符串。默认情况下,搜索字符串按字面意思处理。除非你使用正则表达式语法,否则 `find` 命令搜索的文件名正是你在引号之间输入的字符串。 +你可以借助正则表达式使用完整或部分的文件名来定位文件。`find` 命令需要你给出想搜索的目录;指定搜索属性选项,例如,`-name` 用于指定区分大小写的文件名;然后是搜索字符串。默认情况下,搜索字符串按字面意思处理:除非你使用正则表达式语法,否则 `find` 命令搜索的文件名正是你在引号之间输入的字符串。 -假设你的 Documents 目录包含四个文件:`Foo`、`foo`、`foobar.txt` 和 `foo.xml`。以下是对 `foo` 的字面搜索: +假设你的 `Documents` 目录包含四个文件:`Foo`、`foo`、`foobar.txt` 和 `foo.xml`。以下是对 `foo` 的字面搜索: ``` $ find ~ -name "foo" @@ -60,11 +61,11 @@ $ find ~ -iname "foo*.???" /home/tux/Documents/examples/foobar.txt ``` -这不是正则表达式语法,因此 `.` 在示例中只表示文字点。 +这不是正则表达式语法,因此 `.` 在示例中只表示字母“点”。 ### 正则表达式 -你还可以使用正则表达式。与 `-iname` 和 `-name` 一样,也有区分大小写和不区分大小写的选项。但不一样的是,`-regex` 和 `-iregex` 搜索应用于整个路径,而不仅仅是文件名。这意味着,如果你搜索 `foo`,你不会得到任何结果,因为 `foo` 与 `/home/tux/Documents/foo` 不相等。相反,你必须搜索整个路径,或者在字符串的开头使用通配符序列: +你还可以使用正则表达式。与 `-iname` 和 `-name` 一样,也有区分大小写和不区分大小写的选项。但不一样的是,`-regex` 和 `-iregex` 搜索应用于整个路径,而不仅仅是文件名。这意味着,如果你搜索 `foo`,你不会得到任何结果,因为 `foo` 与 `/home/tux/Documents/foo` 不匹配。相反,你必须要么搜索整个路径,要么在字符串的开头使用通配符: ``` $ find ~ -iregex ".*foo" @@ -74,7 +75,7 @@ $ find ~ -iregex ".*foo" ### 查找近一周修改过的文件 -要查找近一周修改的文件,使用 `-mtime` 选项以及过去的天数: +要查找近一周修改的文件,使用 `-mtime` 选项以及过去的天数(负数): ``` $ find ~ -mtime -7 @@ -96,12 +97,12 @@ $ find ~ -mtime +1 -mtime -7 指定查找文件的类型来优化 `find` 的结果是很常见的。如果你不确定要查找的内容,则不应该使用此选项。但如果你知道要查找的是文件而不是目录,或者是目录而不是文件,那么这可能是一个很好的过滤器。选项是 `-type`,它的参数是代表不同类型数据的字母代码。最常见的是: -* `d` \- 文件夹 -* `f` \- 文件 -* `l` \- 链接文件 -* `s` \- 套接字 -* `p` \- 命名管道 (FIFO 使用) -* `b` \- 块设备 (通常是硬盘) +* `d` - 目录 +* `f` - 文件 +* `l` - 链接文件 +* `s` - 套接字 +* `p` - 命名管道(用于 FIFO) +* `b` - 块设备(通常是硬盘) 下面是一些例子: @@ -133,9 +134,9 @@ $ find /usr -mindepth 8 -iname "*xml" | wc -l 9255 ``` -### 下载备忘录 +### 下载速查表 -本文仅介绍 `find` 的基本功能,它是一个很好的搜索工具,但对于强大的 [Parallel][5] 命令来说,它也是一个非常有用的前端。学习 `find` 的原因有很多,所以**[下载我们免费的 `find` 备忘录][6]**吧,它可以帮助你了解有关该命令的更多信息。 +本文仅介绍 `find` 的基本功能,它是一个很好的搜索工具,但对于强大的 [Parallel][5] 命令来说,它也是一个非常有用的前端。学习 `find` 的原因有很多,所以 [下载我们免费的 `find` 速查表][6] 吧,它可以帮助你了解有关该命令的更多信息。 --- @@ -144,7 +145,7 @@ via: https://opensource.com/article/21/9/linux-find-command 作者:[Seth Kenlon][a] 选题:[lujun9972][b] 译者:[MjSeven](https://github.com/MjSeven) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出