find
命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时不设置任何参数,则 find
命令将在当前目录下查找子目录与文件,并将查找到的子目录和文件全部显示。
语法
find [选项] [参数]
选项
- -amin <分钟>:查找在指定时间曾被存取过的文件或目录,单位为分钟。
- -anewer <参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录。
- -atime <24小时数>:查找在指定时间曾被存取过的文件或目录,单位为24小时。
- -cmin <分钟>:查找在指定时间曾被更改过的文件或目录,单位为分钟。
- -cnewer <参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录。
- -ctime <24小时数>:查找在指定时间曾被更改过的文件或目录,单位为24小时。
- -daystart:从本日开始计算时间。
- -depth:从指定目录下最深层的子目录开始查找。
- -empty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录。
- -exec <执行指令>:假设find指令的回传值为True,就执行该指令。
- -false:将find指令的回传值皆设为False。
- -fls <列表文件>:此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件。
- -follow:排除符号连接。
- -fprint <列表文件>:此参数的效果和指定“-print”参数类似,但会把结果保存成指定的列表文件。
- -fstype <文件系统类型>:只寻找该文件系统类型下的文件或目录。
- -gid <群组识别码>:查找符合指定之群组识别码的文件或目录。
- -group <群组名称>:查找符合指定之群组名称的文件或目录。
- -help 或 –help:在线帮助。
- -iname <范本样式>:此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别。
- -links <连接数目>:查找符合指定的硬连接数目的文件或目录。
- -ls:假设find指令的回传值为True,就将文件或目录名称列出到标准输出。
- -maxdepth <目录层级>:设置最大目录层级。
- -mindepth <目录层级>:设置最小目录层级。
- -mmin <分钟>:查找在指定时间曾被更改过的文件或目录,单位为分钟。
- -name <范本样式>:指定字符串作为寻找文件或目录的范本样式。
- -newer <参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录。
- -perm <权限数值>:查找符合指定的权限数值的文件或目录。
- -print:假设find指令的回传值为True,就将文件或目录名称列出到标准输出。
- -printf <输出格式>:假设find指令的回传值为True,就将文件或目录名称列出到标准输出,格式可以自行指定。
- -size <文件大小>:查找符合指定的文件大小的文件。
- -type <文件类型>:只寻找符合指定的文件类型的文件。
- -uid <用户识别码>:查找符合指定的用户识别码的文件或目录。
- -user <拥有者名称>:查找符合指定的拥有者名称的文件或目录。
- -xdev:将范围局限在先行的文件系统中。
文件类型
- f:普通文件
- l:符号连接
- d:目录
- c:字符设备
- b:块设备
- s:套接字
- p:Fifo
简单示例
- 列出当前目录及子目录下所有文件和文件夹
- 在
/home
目录下查找以 .txt
结尾的文件名
1
| find /home -name "*.txt"
|
- 忽略大小写查找
.txt
文件
1
| find /home -iname "*.txt"
|
- 当前目录及子目录下查找所有以
.txt
和 .pdf
结尾的文件
1
2
3
| find . \( -name "*.txt" -o -name "*.pdf" \)
或
find . -name "*.txt" -o -name "*.pdf"
|
- 基于正则表达式匹配文件路径
1
| find . -regex ".*\(\.txt\|\.pdf\)$"
|
- 搜索
/usr/
目录中路径包含 “local” 的文件
1
| find /usr/ -path "*local*"
|
- 找出/home下不是以.txt结尾的文件
1
| find /home ! -name "*.txt"
|
- 根据文件类型进行搜索