介绍
Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
命令格式
find 搜索路径 [选项] 搜索内容
find 是比较特殊的命令,它有两个参数:
- 第一个参数用来指定搜索路径;
- 第二个参数用来指定搜索内容。
常用的命令
-empty : 空的文件
-gid n :gid 是 n 用户组的数字id
-group name : 用户组 group 名称是 name
-path p, -ipath p : 路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
-type c : 文件类型是 c 的文件。
-pid n : process id 是 n 的文件
举例
按照文件名搜搜
- -name: 按照文件名搜索;
- -iname: 按照文件名搜索,不区分文件名大小;
- -inum: 按照 inode 号搜索;
将目前目录及其子目录下所有延伸档名是 c 的文件列出来。
find . -name "*.c" # 内容加""引号
按照文件类型搜索
-type c : 文件类型是 c 的文件。
d: 目录
c: 字型装置文件
b: 区块装置文件
p: 具名贮列
f: 一般文件
l: 软链文件
s: socket
将当前目录机及其子目录下的一般文件列出来
find . -type f
按照文件大小搜索
- -size[±]大小:按照指定大小搜索文件
将当前目录机及其子目录下大于20k的文件列出来
find -size +20k
逻辑运算符
- -a:and逻辑与
- -o:or逻辑或
- -not:not逻辑非
在当前目录下搜索大于2KB,并且文件类型是普通文件的文件
find.-size +2k -a -type f
在当前目录下搜索3天以内修改过,并且权限是644的文件
find.-mtime -3 -a -perm 644
在当前目录下搜索文件名不是cangls的文件
find.-not -name cangls
其他选项
-exec选项
find 搜索路径 [选项] 搜索内容 -exec 命令 {} \;
这里的"{}“和”\;“是标准格式,只要执行”-exec"选项,这两个符号必须完整输入。可以用 + 替代
这个选项的作用其实是把 find 命令的结果交给由"-exec"调用的命令 2来处理。"{}"就代表 find 命令的査找结果。
查找当前目录下的文件,并且搜索包含com的行
find . -type f -exec grep com {} +
末尾的加号也可以替换为 ‘\;’
“-exec"选项的作用是把 find 命令的结果放入”{}"中,再由后面的命令来处理。
在这个例子中就是用"grep com"命令直接处理,会使 find 命令更加方便。
-ok选项
“-ok"选项和”-exec"选项的作用基本一致,区别在于:"-exec"的命令会直接处理,而不询问;
"-ok"的命令在处理前会先询问用户是否这样处理,在得到确认命令后,才会执行。
例如:find . -type f -ok rm {} \;
(不能用 + 替换 ‘\;’ )
< rm … ./b > ? <-需要用户输入y,才会执行
我们这次使用rm命令来删除find找到的结果,删除的动作最好确认一下