app开发定制Find命令的7种用法

Findapp开发定制对于技术面试,app开发定制它也是一个热门话题。app开发定制让我们看一道真题:

如果你的 Linux app开发定制服务器上有一个名为 logs 的目录,app开发定制如何删除该目录下最后app开发定制一次访问时间超过一年app开发定制的日志文件呢?

app开发定制这种情况很常见,但令人惊讶的是,并非每个开发人员都能在面试中清楚地写出这个命令。

答案:首先我们需要使用 cd 命令进入对应的目录,然后,命令如下:

find . -type f -atime +365 -exec rm -rf {} \; 

如果你还没有完全理解上面的命令,完全不用担心。本文将介绍 find 命令的 7 个实际用途,您最终会掌握它。如果您已经知道了,那么阅读这篇文章对您来说将是一个很好的回顾。

按名称或正则表达式查找文件

让我们从最简单的用法开始。要按特定名称搜索文件,命令如下:

find . -name test.txt

如何查找所有格式为 pdf 的书籍?使用正则表达式:

find ./yang/books -name "*.pdf"

默认情况下,find 命令会搜索常规文件,但最好进行指定(-type f)以使所有内容更清晰:

find ./yang/books -type f -name "*.pdf"

查找不同类型的文件

除了搜索常规文件外,我们还可以通过指定 -type 选项来搜索其他类型的文件。

例如目录:

find . -type d -name "yang*"

或者符号链接:

find . -type l -name "yang*"

按指定的时间戳查找文件

要按指定的时间戳搜索文件,我们需要知道 Linux 系统中的 3 个不同的时间戳:

  • 访问时间戳(atime):最后一次读取文件的时间。

  • **修改时间戳 (mtime)**:文件内容最后一次被修改的时间。

  • **更改时间戳 ()**:上次更改文件元数据的时间(如,所有权、位置、文件类型和权限设置)

所以,正如开头提到的面试题,要搜索 atime 超过一年的文件,我们可以编写如下命令:

find . -type f -atime +365

如果我们需要查找 mtime 正好是 5 天前的文件,请不要包含 +,因为它的意思是“大于”。

find . -type f -mtime 5

显然,+ 表示“大于”,- 表示“小于”。所以我们可以搜索 ctime 在 5~10 天前的文件:

find . -type f -ctime +5 -ctime -10

按大小查找文件

-size 选项使我们能够按指定大小查找文件。我们可以将其计量单位指定为以下约定:

  • b:512 字节块(默认)

  • c:字节

  • w:双字节字

  • k:KB

  • M:MB

  • G:GB

类似于按时间戳查找文件,+ 表示“大于”,- 表示“小于”。例如,要查找大小为 10 MB ~ 1 GB 的文件:

find . -type f -size +10M -size -1G

按权限查找文件

合理控制文件的权限是 Linux 管理员的一项重要任务。find 命令的 -perm 选项可以帮助我们按指定权限查找文件:

find . -type f -perm 777

例如,上面的命令会搜索所有具有 777 权限的文件,这意味着一个文件对其持有者、组和所有用户具有所有的读、写和可执行权限。

按所有权查找文件

这个任务很简单。我们可以使用 -user 选项指定用户名。例如,以下命令将查找所有属于 yang 的文件:

find -type f -user yang

在找到文件后执行命令

在大多数情况下,我们希望在找到我们需要的文件后进行后续操作。例如将其删除,或检查它们的详细信息等等。-exec 命令使这些所有事情变得更加容易。

现在,要了解如何使用它,让我们回到之前提到的面试问题:

find . -type f -atime +365 -exec rm -rf {} \;

上述命令在 -exec 选项后是 rm -,其用于删除文件。{} 是用于查找结果的占位符。

注意:占位符 {} 非常重要,尤其是在您想删除文件时。因为,如果您不使用它,该命令将对所有文件执行(而不是您刚刚通过 find 命令找到的文件)。

做一个尝试,请在终端上执行以下两个命令,并检查它们的结果有何不同:

一个使用占位符:

find . -type f -atime +5 -exec ls {} \;

另一个不使用:

find . -type f -atime +5 -exec ls \;

-exec 选项后面的命令必须以分号(;)结束。众所周知,用于去除单个字符的特殊含义。在 Linux 中,反斜杠 \ 用作转义字符。所以我们将它用于分号字符。

总结

看完 find 命令的 7 种用法后,开始提到的面试题现在好像很容易解决了。你现在可以直接写下它的答案并将其解释清楚吗?

find . -type f -atime +365 -exec rm -rf {} \;

扫码开启学习

免费学习资源获取

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发