find
命令用于在指定目录下查找文件和目录,支持多种匹配条件和动作,是Linux系统中非常强大的文件搜索工具。
find
命令的基本格式为 find [路径] [匹配条件] [动作]
。其中,路径指要查找的目录,可以是多个路径,如果未指定则默认为当前目录。匹配条件用于指定查找的文件名、类型、大小等,而动作则是对符合条件的文件执行的操作。
-name pattern
按文件名查找,支持通配符 * 和 ?。-type type
按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等。
-size [+-]size[cwbkMG]
按文件大小查找,+ 或 - 表示大于或小于指定大小,单位可以是字节(c)、字数(w)、块数(b)、千字节(k)、兆字节(M)或吉字节(G)。
-mtime days
按修改时间查找,+ 或 - 表示在指定天数前或后修改的文件。
-user username
按文件所有者查找。
-group groupname
按文件所属组查找。
-amin n
查找在 n 分钟内被访问过的文件。
-atime n
查找在 n*24 小时内被访问过的文件。
-cmin n
查找在 n 分钟内状态发生变化的文件(例如权限)。
-ctime n
查找在 n*24 小时内状态发生变化的文件(例如权限)。
-mmin n
查找在 n 分钟内被修改过的文件。
-exec command {} \;
对匹配的文件执行指定命令,{} 会被替换成文件名,; 表示命令结束。
示例:
查找目录中所有占用超过8M的images文件夹
find -type d -name images -exec du -sm {} \; | awk '$1 > 8' | grep "\images$" | awk '{print $2}'