Find命令全集
简介
find
命令是 Linux 系统中的一款基于目录文件查找的命令。它可以查找指定目录下符合指定条件的文件或目录,并对这些文件或目录进行相应的操作。
find
命令非常强大,提供了很多可选参数,支持使用通配符进行模糊匹配,还可以使用用户自定义的过滤条件。find
命令可以查找文件、目录,甚至可以查找符号链接、设备文件等。
命令格式
find
命令的基本格式如下:
find [寻找路径] [选项和参数] [匹配条件]
[寻找路径]
:指定查找的起始目录,可以是相对路径和绝对路径。如果不指定,则默认从当前目录开始查找。[选项和参数]
:用于指定一些操作和过滤条件,比如:-type
、-mtime
、-mtime +7
、-name
等选项。[匹配条件]
:具体的过滤规则,用于匹配文件名、文件类型、文件大小、修改时间等信息。
常用选项和参数
以下是find
命令中常用的选项和参数:
-
-name pattern
:根据文件名进行模糊匹配。例如,查找
/etc
目录下所有以.conf
结尾的文件:find /etc -name "*.conf"
-
-type [bcdpfls]
:根据文件类型进行匹配。该选项后面紧跟的字符表示文件类型,取值范围如下:b
:块设备文件(如硬盘、光驱等)。c
:字符设备文件(如键盘、鼠标等)。d
:目录文件。p
:命名管道。f
:普通文件。l
:符号链接。s
:套接字文件。
例如,查找
/
目录下所有普通文件:find / -type f
-
-mtime n
:根据文件修改时间进行匹配。该选项后面紧跟一个数字n
,表示距今n
天内修改过的文件。例如,查找
/
目录下距今7天内修改过的文件:find / -mtime -7
-
-size [+|-]n[b|c|w|k|M|G]
:根据文件大小进行匹配。+
表示文件大小大于等于指定值,-
表示文件大小小于等于指定值,b
表示以字节为单位,c
表示以字节为块,w
表示以 2 字节为块,k
表示以 1024 字节(1KB)为块,M
表示以 MB 为单位,G
表示以 GB 为单位。例如,查找
/
目录下大小超过1GB的文件:find / -type f -size +1G
-
-empty
:查找空文件或空目录。例如,查找
/var
目录下所有空目录:find /var -type d -empty
-
-user user_name
:根据所有者进行匹配。例如,查找
/home
目录下所有属于 user1 所有的文件:find /home -user user1
-
-group group_name
:根据所属组进行匹配。例如,查找
/home
目录下所有属于 group1 所有的文件:find /home -group group1
-
-perm mode
:根据文件权限进行匹配。例如:-perm 777
:查找文件权限为 777 的文件。-perm -777
:查找文件权限包含 777 的文件。-perm /777
:查找文件权限包含 777 的文件,但不包括权限恰好为 777 的文件。
-
-maxdepth n
:指定最大搜索深度,避免递归搜索过多的子目录。例如,查找
/etc
目录下最大深度为 1 的所有文件和文件夹:find /etc -maxdepth 1
示例
示例一
查找/home
目录下修改时间距今 30 天以内,属于user1
用户的所有.txt
和.log
文件。
find /home -type f \( -name "*.txt" -o -name "*.log" \) -mtime -30 -user user1
该命令说明:
-type f
:查找文件。\( -name "*.txt" -o -name "*.log" \)
:使用圆括号括起来的两个-name
条件表示查找文件名满足以.txt
结尾或者以.log
结尾的文件。-mtime -30
:查找文件修改时间距现在不超过30天的文件。-user user1
:查找文件所有者是user1
的文件。
示例二
查找/var
目录下大小超过 1GB,修改时间在 3 天以内,属于www
用户的所有日志文件,同时将找到的文件使用tar
打包。
find /var -type f -size +1G -mtime -3 -user www -name "*.log" -exec tar -czf logs.tar.gz {} +
该命令说明:
-size +1G
:查找文件大小超过 1GB 的文件。-mtime -3
:查找文件修改时间距现在不超过 3 天的文件。-user www
:查找文件所有者是www
用户的文件。-name "*.log"
:查找符合文件名为以.log
结尾的文件。-exec tar -czf logs.tar.gz {} +
:对找到的文件进行打包操作,其中{}
表示查找到的文件名,+
表示一次性将查找到的所有文件打包起来,避免每个文件都打包一次。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:find 命令全集 - Python技术站