Find

149 阅读2分钟

find

find 是一个在 Linux 系统中用于查找文件和目录的强大工具。它可以根据指定的条件,在文件系统中搜索匹配的文件或目录,并输出结果。以下是 find 命令的基本用法和常见选项

基本语法:

bashCopy code
find [path...] [expression]
  • path: 要开始搜索的路径。如果省略路径,则默认为当前目录。
  • expression: 指定搜索的条件和操作。

常见选项:

  • -name pattern: 根据文件名匹配文件。
  • -type type: 根据文件类型匹配文件,如 f 表示普通文件,d 表示目录。
  • -size [+|-]size: 根据文件大小匹配文件,+ 表示大于,- 表示小于。
  • -exec command {} ;: 对搜索到的文件执行指定的命令。
  • -print: 默认操作,打印匹配的文件名。

实例用法

  1. 根据文件名查找

    查找当前目录及其子目录中名为 example.txt 的文件:

    find . -name "example.txt"
    
  1. 根据文件类型查找

    查找当前目录及其子目录中所有目录:

    find . -type d
    

    查找当前目录及其子目录中所有普通文件:

    find . -type f
    
  2. 根据文件大小查找

    查找当前目录及其子目录中大小大于 1MB 的文件:

    find . -type f -size +1M
    

    查找当前目录及其子目录中大小小于 100KB 的文件:

    find . -type f -size -100k
    
  3. 执行操作

    查找当前目录及其子目录中所有 .txt 文件,并删除它们:

    执行操作?操作什么

    find . -type f -name "*.txt" -exec rm {} ;
    

    查找当前目录及其子目录中所有 .bak 文件,并移动到 /backup 目录下:

    find . -type f -name "*.bak" -exec mv {} /backup/ ;
    
  4. 组合多个条件

    查找当前目录及其子目录中大小在 1MB 到 10MB 之间的 .jpg 文件:

    find . -type f -name "*.jpg" -size +1M -size -10M
    
  5. 查找最近修改的文件

    查找当前目录及其子目录中最近 7 天内修改过的文件:

    find . -type f -mtime -7
    

    查找当前目录及其子目录中最近 1 小时内访问过的文件:

    find . -type f -amin -60
    
  6. 控制查找目录层级

    -maxdepth 选项来限制搜索的深度

    find . -maxdepth 1 -type f -name "*.txt"