find命令

本文详细介绍了Linux下find命令的使用方法,包括如何通过多种条件筛选文件,例如按名称、时间、大小等查找。提供了多个实际应用的例子,帮助读者快速掌握find命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将档案系统内符合 expression 的档案列出来。你可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。

   find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。

  expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。

  -mount, -xdev : 只检查和指定目录在同一个档案系统下的档案,避免列出其它档案系统中的档案

  -amin n : 在过去 n 分钟内被读取过

  -anewer file : 比档案 file 更晚被读取过的档案

  -atime n : 在过去 n 天过读取过的档案

  -cmin n : 在过去 n 分钟内被修改过

  -cnewer file :比档案 file 更新的档案

  -ctime 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 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 档案类型是 c 的档案。

  d: 目录

  c: 字型装置档案

  b: 区块装置档案

  p: 具名贮列

  f: 一般档案

  l: 符号连结

  s: socket

  -pid n : process id 是 n 的档案

  你可以使用 ( ) 将运算式分隔,并使用下列运算。

  exp1 -and exp2

  ! expr

  -not expr

  exp1 -or exp2

  exp1, exp2

  范例:

  将目前目录及其子目录下所有延伸档名是 c 的档案列出来。

  # find . -name "*.c"

  将目前目录其其下子目录中所有一般档案列出

  # find . -ftype f

  将目前目录及其子目录下所有最近 20 分钟内更新过的档案列出

  # find . -ctime -20

  find . -name "*" -exec grep xxx {} ; -print |morexxx为你想要找的字符串

### Linux `find` 命令使用指南 `find` 是一个强大的命令行工具,用于在目录层次结构中搜索文件和目录。它提供了丰富的选项来精确控制搜索行为,并支持基于多种条件(如名称、类型、大小、时间等)进行过滤。 #### 1. 基本语法 `find` 的基本语法如下: ```bash find [路径] [选项] [表达式] ``` - `[路径]`:指定搜索的起始目录。如果省略,则默认为当前目录。 - `[选项]`:控制搜索行为的参数。 - `[表达式]`:定义搜索条件的逻辑表达式。 #### 2. 常用选项 以下是一些常用的 `find` 命令选项及其功能: - **限制目录深度** 使用 `-maxdepth` 和 `-mindepth` 选项可以限制搜索的目录深度[^1]。例如,仅搜索当前目录而不进入子目录: ```bash find . -maxdepth 1 -name "*.txt" ``` - **跟随符号链接** 默认情况下,`find` 不会跟随符号链接。若需要强制跟随符号链接,可使用 `-L` 选项。但需注意,若遇到指向自身的符号链接,可能会导致死循环。 - **根据文件类型搜索** 可以通过 `-type` 选项指定文件类型[^1]。常见的文件类型包括: - `f`:普通文件 - `d`:目录 - `l`:符号链接 示例:查找所有普通文件: ```bash find /path/to/directory -type f ``` - **按名称搜索** 使用 `-name` 或 `-iname`(忽略大小写)选项可以根据文件名进行搜索。例如,查找扩展名为 `.log` 的文件: ```bash find /var -name "*.log" ``` - **按修改时间搜索** 可以使用 `-mtime`、`-atime` 和 `-ctime` 选项根据文件的时间戳进行搜索。例如,查找最近 7 天内修改过的文件: ```bash find /path/to/directory -mtime -7 ``` - **按大小搜索** 使用 `-size` 选项可以根据文件大小进行搜索。例如,查找大于 100MB 的文件: ```bash find /path/to/directory -size +100M ``` #### 3. 综合示例 以下是一些综合使用的示例: - 查找当前目录下所有普通文件并删除: ```bash find . -type f -exec rm -f {} \; ``` - 查找 `/home` 目录下所有空文件: ```bash find /home -type f -empty ``` - 查找 `/etc` 目录下所有最近 24 小时内访问过的配置文件: ```bash find /etc -type f -atime 0 ``` #### 4. 注意事项 - 使用 `-exec` 选项执行命令时,请确保命令的安全性,避免误删重要文件。 - 当搜索范围较大时,`find` 命令可能需要较长时间完成,建议结合 `-maxdepth` 限制搜索范围。 ```bash # 示例:查找当前目录下所有普通文件并打印其权限 find . -type f -exec ls -l {} \; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值