Linux Find命令:查找文件
find 命令是 Linux 系统中非常强大和灵活的文件查找工具,可以用来根据各种条件查找文件,包括文件名、大小、类型、修改时间以及文件权限等。
按照文件名称搜索
find命令中,用于文件名称的参数如下:
- -name: 按照文件名搜索,支持使用通配符 * 和 ?。
- -iname: 按照文件名搜索,不区分文件名大小,支持使用通配符 * 和 ?。
- -inum: 按照 inode 号搜索。
文件名称大小写匹配
使用 -name
选项,可以按照文件名称查找。这里的文件名称是区分大小写的。
查找文件名称是 hosts
的文件,文件名称区分大小写:
find /path/to/search -name hosts
查找文件名称包含 host
的文件,文件名称区分大小写:
find /path/to/search -name *hosts*
文件名称不区分大小写匹配
使用 -iname
选项,可以按照文件名称查找。这里的文件名称是不区分大小写的。
查找文件名称是 hosts
的文件,文件名称不区分大小写:
find /path/to/search -iname hosts
查找文件名称包含 host
的文件,文件名称不区分大小写:
find /path/to/search -iname *hosts*
按照文件类型搜索
find命令中,用于文件类型的参数如下:
- -type d:查找目录
- -type f:查找普通文件
- -type l:查找软链接文件
查找目录
使用 -type d
选项,可以用来查找目录。
find /path/to/search -type d
查找文件
使用 -type f
选项,可以用来查找普通文件。
find /path/to/search -type f
查找软链接
使用 -type l
选项,可以用来查找软链接文件。
find /path/to/search -type l
按照文件大小搜索
使用 size n[cwbkMG]
选项,可以查找指定大小的文件。
查找n值大小的文件,默认单位是: b
,即:块(1块=512字节)。
- b: for 512-byte blocks 这是默认单位,如果单位为b或不写单位,则按照 512Byte搜索
- c: for bytes 搜索单位是c,按照字节搜索
- w: for two-byte words 搜索单位是w,按照双字节(中文)搜索
- k: for Kilobytes (units of 1024 bytes) 按照KB单位搜索,必须是小写的k
- M: for Megabytes (units of 1048576 bytes) 按照MB单位搜索,必须是大写的M
- G: for Gigabytes (units of 1073741824 bytes) 按照GB单位搜索,必须是大写的G
查找大小为50M的文件
查找大小为50M的文件:
find /path/to/search -size 50M
查找大于等于50M小于100M的文件
查找大于等于50M并且小于100M的文件:
find /path/to/search -size +50M -size -100M
按照修改时间搜索
find 命令中用于时间的参数如下:
- -amin n:查找在 n 分钟内被访问过的文件。
- -atime n:查找在 n*24 小时内被访问过的文件。
- -cmin n:查找在 n 分钟内状态发生变化的文件(例如权限)。
- -ctime n:查找在 n*24 小时内状态发生变化的文件(例如权限)。
- -mmin n:查找在 n 分钟内被修改过的文件。
- -mtime n:查找在 n*24 小时内被修改过的文件。
在这些参数中,n 可以是一个正数、负数或零。正数表示在指定的时间内修改或访问过的文件,负数表示在指定的时间之前修改或访问过的文件,零表示在当前时间点上修改或访问过的文件。
下面是一些使用 find 命令查找指定时间范围内的文件的例子。
查找在过去 N 天内修改过的文件
使用 -mtime
选项可以查找在过去 N 天内修改过的文件。-mtime 的值是一个整数,表示从现在开始向前推算的天数。例如:
查找过去 7 天内修改过的文件:
find /path/to/search -type f -mtime -7
这里的 -7 表示从今天开始往前 7 天内修改过的文件(包括今天)。
查找超过 30 天前修改的文件:
find /path/to/search -type f -mtime +30
这里的 +30 表示超过 30 天前修改的文件。
查找在特定日期范围内修改的文件
find 命令结合 -newermt
选项可以更精确地查找在特定日期范围内修改的文件。 -newermt
允许你指定一个起始日期和结束日期。
查找在 2024 年 1 月 1 日到 2024 年 12 月 31 日之间修改的文件:
find /path/to/search -type f -newermt "2024-01-01" ! -newermt "2025-01-01"
这里的 ! -newermt "2025-01-01" 表示不包括 2025 年 1 月 1 日及之后的文件。
查找在过去 N 分钟内修改过的文件
使用 -mmin
选项可以查找在过去 N 分钟内修改过的文件。 -mmin
的值是一个整数,表示从现在开始向前推算的分钟数。
查找过去 60 分钟内修改过的文件:
find /path/to/search -type f -mmin -60
这里的 -60 表示从现在开始往前 60 分钟内修改过的文件。
查找超过 120 分钟前修改的文件:
find /path/to/search -type f -mmin +120
这里的 +120 表示超过 120 分钟前修改的文件。
查找在过去 N 小时内修改过的文件
虽然 find
没有直接提供按小时查找的功能,但可以通过 -mmin
选项来实现。例如,查找过去 24 小时内修改的文件:
查找过去 24 小时内修改过的文件:
find /path/to/search -type f -mmin -1440
这里的 1440 是 24 小时的分钟数。
查找在过去 N 秒内修改过的文件
使用 -cmin
选项可以查找在过去 N 秒内修改过的文件。 -cmin
的值是一个整数,表示从现在开始向前推算的秒数。
查找过去 3600 秒(1 小时)内修改过的文件:
find /path/to/search -type f -cmin -3600
这里的 -3600 表示从现在开始往前 3600 秒内修改过的文件。
查找在过去 N 天内访问过的文件
使用 -atime
选项可以查找在过去 N 天内访问过的文件。 -atime
的值是一个整数,表示从现在开始向前推算的天数。
查找过去 7 天内访问过的文件:
find /path/to/search -type f -atime -7
这里的 -7 表示从今天开始往前 7 天内访问过的文件(包括今天)。
查找在过去 N 天内状态改变的文件
使用 -ctime
选项可以查找在过去 N 天内状态改变的文件。 -ctime
的值是一个整数,表示从现在开始向前推算的天数。状态改变包括权限更改、所有者更改等。
查找过去 30 天内状态改变的文件:
find /path/to/search -type f -ctime -30
这里的 -30 表示从今天开始往前 30 天内状态改变的文件(包括今天)。
按照权限查找文件
find命令中,用于权限的参数有:
- -user username:按文件所有者查找。
- -group groupname:按文件所属组查找。
按文件所有者查找文件
使用 -user username
选项,可以按照文件所有者查找文件。
find /path/to/search -user root
按文件所属组查找
使用 -grou groupname
选项,可以按照文件所属组查找文件。
find /path/to/search -group root
结合多个条件查找文件
你可以结合多个条件来查找文件。例如,查找在过去 7 天内修改过且文件大小大于 1MB 的文件:
find /path/to/search -type f -mtime -7 -size +1M
这里的 -size +1M 表示文件大小大于 1MB。
使用 -exec 执行操作
你还可以结合 -exec
选项对查找到的文件执行某些操作。例如,删除过去 30 天内未修改的文件:
find /path/to/search -type f -mtime +30 -exec rm -f {} \;
这里的 -exec rm -f {} \; 表示对每个查找到的文件执行 rm -f 命令进行删除。