-
-name pattern
find /path -name "*.txt"- 按名称查找文件或目录。支持通配符(如
*和?)。
- 按名称查找文件或目录。支持通配符(如
-
-iname pattern
find /path -iname "*.TXT"- 按名称查找文件或目录,不区分大小写。
-
-type c
find /path -type f- 按文件类型查找。
c可以是以下字符之一:f:普通文件d:目录l:符号链接c:字符设备文件b:块设备文件p:命名管道(FIFO)s:套接字文件
- 按文件类型查找。
-
-size n[cwbkMG]
find /path -size +1G- 按文件大小查找。
n是一个数字,后面可以跟一个单位:c:字节w:两个字节的字b:512 字节的块k:千字节(1024 字节)M:兆字节(1024^2 字节)G:吉字节(1024^3 字节)
- 按文件大小查找。
-
-mtime n
find /path -mtime -7- 按修改时间查找。
n表示天数。例如,-mtime -7表示查找过去 7 天内修改过的文件。
- 按修改时间查找。
-
-atime n
find /path -atime -7- 按访问时间查找。
n表示天数。例如,-atime -7表示查找过去 7 天内访问过的文件。
- 按访问时间查找。
-
-ctime n
find /path -ctime -7- 按状态更改时间查找。
n表示天数。例如,-ctime -7表示查找过去 7 天内状态更改过的文件。
- 按状态更改时间查找。
-
-perm mode
find /path -perm 644- 按权限查找。
mode是一个八进制数,表示文件权限。
- 按权限查找。
-
-user uname/uid
find /path -user root- 按文件所有者查找。
uname是用户名,uid是用户 ID。
- 按文件所有者查找。
-
-group gname/gid
find /path -group staff- 按文件所属组查找。
gname是组名,gid是组 ID。
- 按文件所属组查找。
-
-exec command {} ;
find /path -type f -name "*.log" -exec rm {} \;- 对找到的每个文件执行指定的命令。
{}是占位符,代表当前找到的文件。\;表示命令结束。
- 对找到的每个文件执行指定的命令。
-
-ok command {} ;
find /path -type f -name "*.log" -ok rm {} \;- 类似于
-exec,但在执行命令前会提示用户确认。
- 类似于
-
-print
find /path -type f -name "*.log" -print- 打印找到的文件路径。这是默认行为,可以省略。
-
-ls
find /path -type f -name "*.log" -ls- 详细列出找到的文件信息,类似于
ls -l。
- 详细列出找到的文件信息,类似于
-
-maxdepth levels
find /path -maxdepth 2 -type d- 限制搜索的目录深度。
levels是一个整数,表示最大深度。
- 限制搜索的目录深度。
-
-mindepth levels
find /path -mindepth 2 -type d- 限制搜索的最小目录深度。
levels是一个整数,表示最小深度。
- 限制搜索的最小目录深度。
这些参数可以组合使用,以实现更复杂的文件查找需求。例如:
示例
find /path -type f -name "*.log" -size +100M -mtime -7 -exec rm {} \;
这个命令会查找 /path 目录下所有扩展名为 .log、大小超过 100MB、在过去 7 天内修改过的文件,并删除它们。
结合find和xargs命令
- 使用
find命令查找文件,然后通过xargs将找到的文件传递给grep进行搜索。
find . | xargs grep -ri "aa"
其中,-i表示忽略大小写,-r表示递归搜索。如果只想打印出文件名,可以添加-l选项:
find . | xargs grep -ri "aa" -l
指定文件类型
find / -type f -name "*.txt" | xargs grep "aa"
- 如果知道要搜索的文件类型(例如文本文件),可以在root根目录下根据特定字符串进行查找。
