find命令

find帮助参数

-amin N: 最后一次访问文件的时间(以分钟计)与 N 相匹配。
-anewer FILE: 最后访问文件时间比指定文件 FILE 新的文件。
-atime N: 最后一次访问文件的时间(以天为单位)与 N 相匹配。
-cmin N: 最后一次更改文件的时间(以分钟计)与 N 相匹配。
-cnewer FILE: 最后更改文件时间比指定文件 FILE 新的文件。
-ctime N: 最后一次更改文件的时间(以天为单位)与 N 相匹配。
-empty: 文件为空。
-false: 总是返回 false。
-fstype TYPE: 文件的文件系统类型与给定的类型 TYPE 匹配。
-gid N: 文件的组 ID 与给定的 ID N 匹配。
-group NAME: 文件所属的组名称与给定的名称 NAME 匹配。
-ilname PATTERN: 忽略大小写,文件链接的名称匹配给定的 shell 模式 PATTERN。
-iname PATTERN: 忽略大小写,文件名称匹配给定的 shell 模式 PATTERN。
-inum N: 文件的 inode 号与给定的编号 N 匹配。
-iwholename PATTERN: 忽略大小写,整个文件路径匹配给定的 shell 模式 PATTERN。
-iregex PATTERN: 忽略大小写,文件路径匹配给定的正则表达式 PATTERN。
-links N: 文件的硬链接数与给定的数量 N 匹配。
-lname PATTERN: 文件链接的名称匹配给定的 shell 模式 PATTERN。
-mmin N: 文件的修改时间(以分钟计)与 N 相匹配。
-mtime N: 文件的修改时间(以天为单位)与 N 相匹配。
-name PATTERN: 文件名称匹配给定的 shell 模式 PATTERN。
-newer FILE: 文件的修改时间比指定文件 FILE 新的文件。
-nouser: 无效用户拥有该文件。
-nogroup: 无效组拥有该文件。
-path PATTERN: 文件路径匹配给定的 shell 模式 PATTERN。
-perm [-/]MODE: 文件权限与给定的权限 MODE 匹配。
-regex PATTERN: 文件路径匹配给定的正则表达式 PATTERN。
-readable: 文件可读。
-writable: 文件可写。
-executable: 文件可执行。
-wholename PATTERN: 整个文件路径匹配给定的 shell 模式 PATTERN。
-size N[bcwkMG]: 文件大小与给定的大小 N 匹配,可选择指定单位。
-true: 总是返回 true。
-type [bcdpflsD]: 文件类型与给定的类型匹配。
-uid N: 文件的用户 ID 与给定的 ID N 匹配。
-used N: 文件上次访问时间与 N 相匹配。
-user NAME: 文件的所有者名称与给定的名称 NAME 匹配。
-xtype [bcdpfls]: 与 -type 相同,但是不跟随符号链接。
-context CONTEXT: 文件安全上下文与给定的安全上下文 CONTEXT 匹配。

基本语法

find [路径...] [表达式]

路径:指定搜索的目录。如果未指定,默认为当前目录。
表达式:用于过滤搜索结果的条件,包括操作符、选项、测试和动作。

路径和表达式选项:

.:当前目录。
/path/to/dir:指定的目录路径。

操作符表达式

-and 或 -a:逻辑与(默认)。
-or 或 -o:逻辑或。
! 或 -not:逻辑非。
( 和 ):分组表达式。

测试

匹配文件名区分大小写
find . -name "filename.txt"

匹配文件名不区分大小写
find . -iname "filename.txt

按文件类型搜索。常见类型包括:
f:普通文件
d:目录
l:符号链接
`find . -type f`

匹配文件权限
find . -perm 644

按文件`所有者`搜索。
find . -user username


按文件`所属组`搜索
find . -group groupname

按`文件大小`搜索。单位可以是 b (字节),c (字符),w (字),k (千字节),M (兆字节),G (吉字节)。
find . -size +10M

按文件修改时间搜索,N 表示天数,+N 表示 N 天前,-N 表示 N 天内。
find . -mtime -7

按文件访问时间搜索。使用方法同 mtime
find . -atime -7

按文件状态改变时间搜索。使用方法同-mtime。
find . -ctime -7

打印匹配的文件名(默认)
find . -name "filename.txt" -print

对每个匹配的文件执行命令,{} 代表当前文件,-exec COMMAND {} \;
find . -name "*.txt" -exec cat {} \;

对所有匹配的文件一次性执行命令。-exec COMMAND {} +:
find . -name "*.txt" -exec ls -l {} +

删除匹配的文件(小心使用)-delete
find . -name "*.tmp" -delete

以ls格式列出匹配的文件
find . -name "*.txt" -ls

跳过某个目录-prune
find . -path "./dir_to_skip" -prune -o -name "*.txt" -print

查找并列出所有 .txt 文件:
find . -name "*.txt" -print

查找并删除所有临时文件:
find . -name "*.tmp" -delete

查找所有大于 100MB 的文件:
find . -size +100M -print

查找最近 7 天内修改的文件并执行 ls -l:
find . -mtime -7 -exec ls -l {} \;

跳过某个目录进行搜索:
find . -path "./dir_to_skip" -prune -o -name "*.log" -print
posted @ 2024-05-18 17:51  KuangZhuMing2  阅读(37)  评论(0)    收藏  举报