Linux——find命令详解

本文介绍Linux下find命令的使用方法


常用方法说明

  • find命令用于在给定目录下查找符合给定条件的文件

  • 用法:

    1
    Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
  • 常用的用法:

    1
    2
    find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;
    find 目标目录 选项 查找完成后执行的操作
  • 实例:

    1
    find . -name "*a*.py" -exec cat {} \; | grep test
    • 解析:将当前文件夹下的名字能匹配*a*.py的文件找出来,并输出其中含有”test”的行
      • .对应path参数,代表搜索路径为当前文件夹, 默认会递归搜索
      • -name "*a*.py"对应选项,指出找文件的筛选条件
      • -exec cat {} \; | grep test指明找到文件后需要执行的操作,{}用于表示前面被固定下来的接受参数, 由于{}后面必须使用分号;,而命令行中分号需要转义字符转义,所以就是\;
        • 注意: 这里{} \;中间必须空一格,且{} \;中间不能加任何字符或命令等
1
find . -maxdepth 1 -name "test*.py" -exec cat {} \;| grep test
* 在前面的基础上指定只从第一层目录中查找,不递归

参数和选项详解

1
find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

参数

  • -print: find命令将匹配的文件输出到标准输出。
  • -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } ;,注意{ }和;之间的空格。
  • -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行

选项

  • -name: 按照文件名查找文件。
  • -perm: 按照文件权限来查找文件。
  • -prune: 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
  • -user: 按照文件属主来查找文件。
  • -group: 按照文件所属的组来查找文件。
  • -mtime -n +n: 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。
  • -nogroup: 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
  • -nouser: 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
  • -newer file1 ! file2: 查找更改时间比文件file1新但比文件file2旧的文件。
  • -type: 查找某一类型的文件
    • 默认是查找所有类型
参数 文件类型
d 目录
c 字符设备文件
p 管道文件
f 普通文件
l 符号链接文件
b 块设备文件