开发公司Linux命令之查找文件find

概述

find 开发公司命令可以在目录层次结开发公司构中搜索符合指定条件开发公司的文件或目录,开发公司并且可以它们执行指定的操作。开发公司而搜索条件可以是、文件类型、日期、大小等。

语法

开发公司该命令的语法如下:

# find 开发公司命令从指定的起始目录开始,开发公司递归地搜索其各个子目录,开发公司查找满足条件的文件并开发公司对之采取相关的操作find [开发公司指定起始目录] 查找条件 [操作]
  • 1
  • 2

开发公司该命令支持的选项有:

选项说明
-mount, -xdev开发公司只检查和指定目录在同开发公司一个文件系统下的文件,开发公司避免列出其它文件系统中的文件
-amin n在过去 n 开发公司分钟内被读取过
-anewer file比文件 file 开发公司更晚被读取过的文件
-atime n在过去 n 开发公司天内被读取过的文件
-cmin n在过去 n 开发公司分钟内被修改过
-cnewer file比文件 file 开发公司更新的文件
-ctime n在过去 n 开发公司天内创建的文件
-mtime n在过去 n 开发公司天内修改过的文件
-empty空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p开发公司路径名称符合 p 的文件,ipath 开发公司开发公司会忽略大小写
-name name, -iname name开发公司文件名称符合 name 的文件。iname 会忽略大小写
-size n文件大小 是 n 单位
-type c开发公司文件类型是 c 的文件

使用

按文件名查找文件

按文件名查找文件支持的选项有:

选项说明
-name <指定文件名>按指定文件文件名查找文件
-iname <指定文件名>按指定文件文件名查找文件,但忽略文件名的大小写

命令格式如下:

# 语法find 指定起始目录 -name 指定文件名# 示例find /root/ -name test.txt find /root/ -iname TEST.txt
  • 1
  • 2
  • 3
  • 4
  • 5

按扩展名查找文件

按扩展名搜索文件与按名称搜索文件相同,都是使用 -name 选项,但需要用到通配符 *,如要匹配所有以 .txt 后缀结尾的文件,就要写成 -name *.txt。如果要查与正则表达式不匹配的所有文件,可以加上 -not 选项,即如果要查找所有不以 .txt 后缀结尾的文件,就要写成 -not -name *.txt

选项说明
-not EXPR 不与正则表达式 EXPR 匹配的情况

语法如下:

# 语法# 查找指定目录下所有以指定后缀结尾的文件find 指定起始目录 -name *指定后缀# 查找指定目录下所有不以指定后缀结尾的文件find 指定起始目录 -not -name *指定后缀# 示例# 查找 /root/abc/ 目录下所有以 .txt 为后缀结尾的文件find /root/abc/ -name *.txt# 查找 /root/abc/ 目录下所有不以 .txt 为后缀结尾的文件find /root/abc/ -not -name *.txt
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

按文件类型查找文件

有时您可能需要搜索特定文件类型,例如常规文件、目录或符号链接。在 Linux 中,一切都是文件。要根据文件类型搜索文件,请使用 -type 选项和以下描述符之一来指定文件类型:

文件类型描述符说明
f一个普通文件
d目录
l符号链接
c字符设备
b块设备
pFIFO
ssocket 文件

语法格式如下:

# 语法find 指定起始目录 -type 文件类型描述符 # 示例,查找 /root/abc/ 目录下所有普通文件find /root/abc/ -type f
  • 1
  • 2
  • 3
  • 4

按大小查找文件

要根据文件大小查找文件,使用 -size 选项与大小标准一起传递。可以使用以下后缀来指定文件大小:

文件大小标识后缀说明
b512字节块,默认
c字节
w两字节
k千字节
M兆字节
G千兆字节

我们可以查找文件大小恰好等于、小于或大小指定大小的文件,其命令格式如下:

# 语法find 指定起始目录 -size [+-]大小[文件大小标识后缀]# 示例# 在 /root/ 目录下查找文件大小等于 10 字节的文件find /root/ -size 10c# 在 /root/ 目录下查找文件大小小于 1MB 的文件,其中减号表示小于find /root/ -size -1M# 在 /root/ 目录下查找文件大小大于 1MB 的文件,其中加号表示大于find /root/ -size +1M# 在 /root 目录下查找文件大小在 1MB 和 21MB 之间的文件find /root -size +1M -size -21M
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

注:

  • +20 表示 20 之后,如 21、22、23 等。
  • -20 表示 20 之前,如 19、18、17 等。
  • 20 表示恰好是 20。

按时间查找文件

我们可以通过文件的修改时间和访问时间来查找文件,跟文件时间有关的选项有:

选项说明
-amin N查找 N 分钟前被访问过的所有文件
-atime N查找 N 天前被访问过的所有文件
-cmin N查找 N 分钟前文件状态被修改过的所有文件
-ctime N查找 N 天前文件状态被修改过的所有文件
-mmin N查找 N 分钟前文件内容被修改过的所有文件
-mtime N查找 N 天前文件内容被修改过的所有文件

示例如下:

# 查找 /root/ 目录下 3 天前文件内容被修改过的文件find /root/ -mtime 3 
  • 1
  • 2

按权限查找文件

如果想要根据权限来查找文件,那么得使用 -perm 选项:

# 语法find 指定起始目录 -perm 表示权限的数字# 示例,查找 /root/ 目录下所有具有可读可写可执行权限的文件find /root/ -perm 777
  • 1
  • 2
  • 3
  • 4

按所有者查找文件

如果我们要查找指定所有者或所属组的文件,那么可以使用以下选项:

选项说明
-gid N查找组 id 是 N 的所有文件
-uid N查找用户 id 是 N 的所有文件
-group 组名查找属于指定用户组的所有文件
-user 用户名查找属于指定用户的所有文件

示例如下:

# 查找 /root/ 目录下所有属于用户 zs 的文件find /root/ -user zs
  • 1
  • 2

组成的复合条件

该命令还支持用逻辑运算符 notandor 组成的复合条件。各逻辑运算符说明如下:

逻辑运算符说明举例例子说明
and逻辑与,在命令中用选项 -a 表示,是默认选项,表示当所有条件都满足时,查找条件才匹配find /root/ -name test.txt -user 'zs'查找 /root/ 目录下文件名为 test.txt 并且是 zs 创建的文件
or逻辑或,在命令中用选项 -o 表示,表示当只要有一个条件被满足时,查找条件就匹配find /root/ -name test.txt -o -user 'zs'查找 /root/ 目录文件名为 test.txt 或者是由 zs 创建的文件
not逻辑非,在命令用 ! 表示,表示查找不满足给定条件的文件find /root/ ! -name test.txt查找 /root 目录下所有文件名不少 test.txt 的文件

注:当由多个逻辑选项时,可以用括号把这些逻辑选项括起来。但为了避免 Shell 本身对括号引起误解,在话号前需要加 \ 来去除括号的意义。例:find /root/ \(-name test.txt -user 'zs' \)

对找到的文件执行操作

我们可以对找到的文件直接执行操作,那么支持的选项有:

选项说明
-exec 命令名称 {} \;对符合条件的文件执行所给的Linux 命令,而不询问用户是否需要执行该命令。{} 表示命令的参数即为所找到的文件;命令的末尾必须以 \; 结束。
ok 命令名称 {} \;对符合条件的文件执行所给的Linux 命令,与exec不同的是,它会询问用户是否需要执行该命令。

示例如下:

# 在 /root/ 目录下查找文件名为 test.txt 文件,找到之后统计该文件的行数find /root/ -name test.txt -exec wc -l {} \;
  • 1
  • 2

查找隐藏文件

在 Linux 系统中凡是文件名或目录名是以 . 开头的都是隐藏文件。通过 ls 命令是看不到的,必须通过 ls -a 才能看到这些隐藏的文件。

如果只是通过 find 命令是会找出所有文件的,包括隐藏文件和非隐藏文件。但有时候如果我们想要只查找隐藏或只查找非隐藏文件,就必须结合 grep 命令一起使用才能达到想要的效果。因为隐藏文件是 . 开头的,所以根据这个特性,用正则表达式去匹配,但是在正则表达式中 . 是有特殊含义的,所以要进行转义 \.。命令格式如下:

# 只查找指定目录下的所有隐藏文件# `\.` 表示匹配普通的点字符 `.`;而 `\` 又是特殊字符需要进行转义就是 `\\.`;而由于 find 命令查询的结果是文件路径,所以隐藏文件的点字符的前一个字符是 `/`find 指定目录 -type f | grep "/\\."# 示例,查找 /home 目录下的所有隐藏文件find /home -type f | grep "/\\."
  • 1
  • 2
  • 3
  • 4
  • 5

# 只查找指定目录下的所有非隐藏文件# `\.` 表示匹配普通的点字符 `.`;而 `\` 又是特殊字符需要进行转义就是 `\\.`;而由于 find 命令查询的结果是文件路径,所以隐藏文件的点字符的前一个字符是 `/`# -v 选项表示除匹配项之外的所有项find 指定目录 -type f | grep -v "/\\."# 示例,查找 /home 目录下的所有隐藏文件find /home -type f | grep -v "/\\."
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

参考资料:

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发