find
命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find
命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
语法
find path -option [ -print ] [ -exec -ok command ] {} \;
选项
find
的选项特别多,这里列举几个常用的:
-
-name
按照文件名查找文件。 -
-perm
按照文件权限来查找文件。 -
-user
按照文件所属用户来查找文件。 -
-group
按照文件所属的用户组来查找文件。 -mtime +/1 n
按照文件的更改时间(以天为单位)来查找文件。
-
-atime/-ctime/-mtime
以天为单位 -
-amin/-mmin/-cmin
以分钟为单位。
-type
按照文件类型查找文件。
-
b
块设备文件。 -
d
目录。 -
c
字符设备文件。 -
p
管道文件。 -
l
符号链接文件。 -
f
普通文件。
-size n
按照文件大小查找文件。
-
c
字节 -
w
2字节 -
b
512字节 -
K
千字节 -
M
兆字节 -
G
吉字节
对查询结果的处理动作
-
-exec <command> {}
假设 find 指令的回传值为 True ,就执行该指令。 -
-ok <command> {}
此参数的效果和指定 -exec类似,但在执行指令之前会先询问用户,若回答 y 或 Y ,则放弃执行命令。 -
-print
默认动作,标准输出。 -
-delete
删除查找到的文件。
示例
在当前目录及其子目录(用“.”表示)中查找任何扩展名为“c”的文件
find . -name "*.c"
将目前目录其其下子目录中所有一般文件列出
find . -type f
将目前目录及其子目录下所有最近 20 天内更新过的文件列出
find . -ctime 20
将目前目录及其子目录下所有权限为664的文件列出
find . -perm 664
使用 grep 命令在名字以 debug 开头并最近一天修改的文件中搜索 RUN 单词
find ./ -name "debug*" -mtime -1 -exec grep "RUN" {} \;
# 也可以和 xargs 结合使用
find ./ -name "debug*" -mtime -1 | xargs grep "RUN"
修改目录权限
chmod 755 `find /path -type d`
# 或者
find /path -type d -exec chmod 755 {} \;
修改文件权限
chmod 644 `find /path -type f`
# 或者
find /path -type f -exec chmod 644 {} \;