本文介绍Linux下find命令的使用方法
常用方法说明
find命令用于在给定目录下查找符合给定条件的文件
用法:
1
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
常用的用法:
1
2find 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 | 块设备文件 |