* * find:根据表达式在指定的目录下面查找符合条件的文件 * *
用法:find [ path ] [ options ]
options(选项):
-name pattern 根据名字查找文件,可以使用通配符
默认不是正则表达式,使用shell的通配符
* 代表0个或者任意多个字符
? 代表任意一个字符
如:在当前目录 ( 以及目录下面的目录 ) 下查找名字以 . c结尾的所有文件
find ./ -name '*.c'
-regex pattern 根据名字查找文件,以正则表达式的方式指定名字 ,路径也包含在名字里面。
-type b|c|d|p|l|s|f 根据文件类型查找文件
b block 块设备文件
c char 字符设备文件
d directory 目录文件
p pipe 管道文件
l link 连接文件
s socket 套接字文件
f regular file 普通文件
如:在当前目录 ( 以及目录下面的目录 ) 下查找所有的链接文件
find ./ -type l
-size n[c|w|b|K|M|G]
c: 单位是字节
w:word 字,两个字节就是一个字
b:block 块 1b = 512字节
K:1k=1024c
如: 查找文件大小是 5 个字节的
-size 5c
-perm mode 根据文件的权限查找
-mode 要求待匹配的文件权限包含指定的权限
如: 待查找的文件的权限必须包括 0664
-perm -0664
- newer file
查找比文件file新的文件
待查找的文件修改时间必须在file的后面
-delete
删除找到的文件
如:删除到当前目录下的文件名为 4. c 的文件
find ./ -name '4.c' -delete
-exec command {} \;
每找到一个文件,就执行一次command命令
{} 代表找到的文件的文件名
如: 每找到一个c文件,就执行一次 ls -l 命令。
find ./ -name '*.c' -exec ls -l { } \;
-exec command {} +;
所有文件查找完毕后,再去执行command表示的命令
{} + 代表所有找到的文件名列表
find ./ -name '*.c' -exec ls -l { } +;