Something

首页 / 文章 / RSS

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 命令进行删除。