linux的查找命令行,如何使用命令行在Linux中查找文件

find命令是Linux系统管理员中最强大的工具之一。它根据用户给定的表达式在目录层次结构中搜索文件和目录,并且可以对每个匹配的文件执行用户指定的操作。

您可以使用find命令根据其权限,类型,日期,所有权,大小等搜索文件和目录。它也可以与其他工具(例如grep或sed)结合使用。

Linux find命令语法

find命令的一般语法如下:find [options] [path...] [expression]options属性控制符号链接,调试选项和优化方法的处理。

path...属性定义find将在其中搜索文件的一个或多个起始目录。

expression属性由选项,搜索模式和由运算符分隔的动作组成。

要在目录中搜索文件,调用find命令的用户需要对该目录具有读取权限。

让我们看一下以下示例:find -L /var/www -name "*.js"选项-L(选项)告诉find命令跟随符号链接。

/var/www(路径…)指定要搜索的目录。

(表达式)-name "*.js告诉find搜索以.js结尾的文件(JavaScript文件)。

按名称查找文件

通过名称查找文件可能是find命令的最常见用法。要使用文件名查找文件,请在要搜索的文件名后加上-name选项。

例如,要在/home/myfreax目录中搜索名为document.pdf的文件,可以使用以下命令:find /home/myfreax -type f -name document.pdf

要运行不区分大小写的搜索,请将-name选项更改为-iname:find /home/myfreax -type f -iname document.pdf

上面的命令将匹配“ Document.pdf”,“ DOCUMENT.pdf” .. etc.

按扩展名查找文件

按扩展名搜索文件与按名称搜索文件相同。例如,要在/var/log/nginx目录中查找所有以.log.gz结尾的文件,可以使用:find /var/log/nginx -type f -name '*.log.gz'

值得一提的是,使用通配符时,必须加引号或用反斜杠\代替星号*符号,以免shell解释它。

要查找与正则表达式*.log.gz不匹配的所有文件,可以使用-not选项。例如,要查找所有未以*.log.gz结尾的文件,您可以使用:find /var/log/nginx -type f -not -name '*.log.gz'

按类型查找文件

有时您可能需要搜索特定的文件类型,例如普通文件,目录或符号链接。在Linux中,所有内容都是文件。

要根据文件的类型搜索文件,请使用-type选项和以下描述符之一来指定文件类型:f:常规文件

d:目录

c:字符设备

b:块设备

p:命名管道(FIFO)

s:套接字

例如,要在当前工作目录中查找所有目录,可以使用:find . -type d

常见示例是使用chmod命令将网站文件权限递归更改为644,目录权限更改为755:find /var/www/my_website -type d -exec chmod 0755 {} \;

find /var/www/my_website -type f -exec chmod 0644 {} \;

按大小查找文件

要根据文件大小查找文件,请传递-size参数以及大小标准。您可以使用以下后缀指定文件大小:b:512字节块(默认)

c:字节

w:两字节字

k:千字节

​​ M:兆字节

G:千兆字节

以下命令将在/tmp目录中找到所有1024个字节的文件:find /tmp -type f -size 1024c

find命令还允许您搜索个大于或小于指定大小的文件。

在以下示例中,我们正在当前工作目录中搜索所有小于1MB的文件。注意大小值之前的减号-符号:find . -type f -size -1M

如果要搜索大小大于1MB的文件,则需要使用加号+符号:find . -type f -size +1M

您甚至可以搜索大小范围内的文件。以下命令将查找1和2MB之间的所有文件:find . -type f -size +1M -size 21M

按修改日期查找文件

find命令还可以根据文件的最后修改,访问或更改时间来搜索文件。

与按大小搜索时相同,使用加号和减号表示“大于”或“小于”。

假设几天前,您修改了一个鸽舍配置文件,但您忘记了其中一个。您可以轻松过滤/etc/dovecot/conf.d目录下以.conf结尾并且在最近五天内已被修改的所有文件:find /etc/dovecot/conf.d -name "*.conf" -mtime 5

这是使用-daystart选项根据修改日期过滤文件的另一个示例。以下命令将列出/home目录中30或更多天前已修改的所有文件:find /home -mtime +30 -daystart

按权限查找文件

-perm选项可让您根据文件权限搜索文件。

例如,要在/var/www/html目录中查找权限完全为775的所有文件,可以使用:find /var/www/html -perm 644

您可以在数字模式前加上减号-或斜线/。

如果将斜线/用作前缀,则至少一个类别(用户,组或其他类别)必须至少设置相应的位以使文件匹配。

考虑以下示例命令:find . -perm /444

上面的命令将匹配所有为用户,组或其他用户设置了读取权限的文件。

如果将减号-用作前缀,则必须设置文件至少要匹配指定的位。以下命令将搜索对所有者和组具有读写权限并且可由其他用户读取的文件:find . -perm -664

按所有者查找文件

要查找特定用户或组拥有的个文件,请使用-user和-group选项。

例如,要搜索用户myfreax拥有的所有文件和目录,应运行:find / -user myfreax

这是一个真实的例子。假设您要查找用户www-data拥有的所有文件,并将匹配文件的所有权从www-data更改为nginx:find / -user www-data -type f -exec chown nginx {} \;

查找和删除文件

要删除所有匹配的文件,请将-delete选项附加到匹配表达式的末尾。

仅在确信结果与要删除的文件匹配时,请确保仅使用此选项。使用-delete选项之前,最好先打印匹配的文件。

例如,要从/var/log/中删除所有以.temp结尾的文件,您可以使用:find /var/log/ -name `*.temp` -delete

请谨慎使用-delete选项。 find命令行被评估为表达式,如果您首先添加-delete选项,该命令将删除您指定的起点以下的所有内容。

关于目录,find只能删除与rmdir相同的空目录。

结论

我们向您展示了如何在各种选项和条件下使用find命令。

本文应该使您对如何在Linux系统上定位文件有基本的了解。您也可以访问find手册页,并阅读find命令的所有其他强大功能。

如有任何疑问或评论,请在下面发表评论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值