find命令的基本格式是:
find [路径] [选项] [操作]
路径是find命令所查找的范围,如用.来表示当前目录,用/来表示根目录,选项用于指定查找条件,如:可以指定按照文件的属主,更改时间文件类型来查找,下面是find命令的常用选项及其意义:
name | 根据文件名查找 |
perm | 根据文件权限查找 |
prune | 使用这一命令,可以使find命令不在当前指定的目录中查找 |
user | 根据文件属主查找文件 |
group | 根据文件所属的用户组查找文件 |
mtime -n +n | 根据文件的更改时间查找,-n表示文件更改时间距今在n天之内,+n表示文件更改时间在距今n天前 |
nogroup | 查找无有效属组的文件 |
nouser | 查找无有效属主的文件 |
-newer file1 file2 | 查找更改时间比文件file1新但是比file2旧的文件 |
size n:[c] | 查找文件长度为n块的文件,带有c时,表示文件长度以字节记 |
depth | 查找文件时,首先查找当前目录的文件,然后在其子目录中查找 |
type | 查找某一类型的文件,type后面的子选项及意义如下: |
b | 块设备文件 |
c | 字符设备文件 |
p | 管道文件 |
l | 符号链接文件 |
f | 普通文件 |
下面列出了find命令的操作名称及意义:
将匹配的结果输出到标准输出 | |
exec | 对匹配的文件执行该参数所列出的she'll命令,相应的命令形式为command { } \; |
ok | 和exec作用相同,但是在执行每个命令前,给用户提示是否执行 |
示例1:查找当前路径下,修改日期为十日之内的文件:
allanyang-mbp:northstar-tests allanyang$ find . -mtime -10 -print
./.git
./.git/COMMIT_EDITMSG
./.git/config
./.git/FETCH_HEAD
示例2:查找当前目录下匹配*atomic*的文件,并显示详细信息
allanyang-mbp:northstar-tests allanyang$ find . -name '*atomic*' -exec ls -al {} \; -rw-r--r-- 1 allanyang 707 26579 Dec 20 15:02 ./regression-tests/robot/official/01-test-atomic.robot -rw-r--r-- 1 allanyang 707 27513 Dec 20 16:47 ./regression-tests/robot/staging-tests/test-atomic.robot