用于查找指定目录下的文件,同时也可调用其他命令执行相应操作。
find ~ -name "file.txt" #查找家目录下名为file.txt的文件
find ~ -type f -name "file*" #查找家目录下所有以file开头的文件(*表示通配符)
find ~ -type d -name "x*" #查找家目录下所有x开头的目录
find ~ -type d -mtime -3 #查找家目录下最近3天修改过内容的文件夹
find ~ -type f -name "file.txt" -o -name "file*" #查找家目录下名为file.txt的文件或者以file开头的文件(-a:交集,并且同时满足的意思,是默认选项。;-o:并集,或者的意思。;!:取反,与条件相反的意思)
find ~ -type f -name "file*" -exec ls -l {} \; #对当前find查找到的结果执行ls -l命名(显示文件属性),其中{}表示搜索到的结果;\;表示结束符,\表示转义符。
find ~ -type f -name "file.txt" -exec -ls l {} \; -o -name "file*" -exec ls -l {} \;
find命令的参数选项及说明:
参数选项 | 说明 |
---|---|
pathname | 指定需要查找的目录路径 |
-depth | 从指定目录下最深层的子目录开始查找 |
-maxdepth levels | 查找最大目录层级数,levels为数字。 |
-regextype type | 改变正则表达式的模式,默认为emacs。(模式还有:posix-awk、posix-basic、posix-egrep、posix-extended) |
-mtime[-n|n|+n] | 按照文件的修改时间来查找文件(-n:表示文件更改时间距现在n天以内;+n表示文件更改时间距现在n天以前;n:表示文件更改时间距现在第n天) |
-atime[-n|n|+n] | 按照文件的访问时间查找文件,单位是天。 |
-ctime[-n|n|+n] | 按照文件的状态改变时间来查找文件,单位是天。 |
-amin | 按照文件的访问时间来查找文件,单位是分钟。 |
-cmin | 按照文件的状态改变时间来啊查找文件,单位是分钟。 |
-mmin | 按照文件的修改时间来查找文件,单位是分钟。 |
-group | 按照文件所属的组来查找文件 |
-name | 按照文件的名称来查找文件,只支持*、?、[]等特殊通配符。 |
-never | 查找更改时间比指定文件新的文件 |
-nogroup | 查找没有有效用户组的文件(即该文件所属的组在/etc/groups中不存在) |
-nouser | 查找没有有效属主的文件(即该文件的属主在/etc/passwd中不存在) |
-path pattern | 指定路径样式,配合-prune参数排除指定的目录 |
-perm | 按照文件权限来查找文件 |
-regex | 接正则表达式 |
-iregex | 接正则表达式,不区分大小写。 |
-size n[cwbkMG] | 查找文件长度为n块的文件,带有cwbkMG时表示文件长度以字节计算。 |
-user | 按照文件属主来查找 |
-type | 按照文件类型来查找(b:块设备文件;c:字符设备文件;d:目录;p:管道文件;l:符号链接文件;f:普通文件;s:socket文件;D:door) |
-delete | 将查找出的文件删除 |
-exec | 对匹配的文件执行该参数所给出的shell命令 |
-ok | 和-exec作用相同,但在执行每个命令之前都会提示用户确认。 |
-prune | 使用这一选项可以使find命令不在当前指定的目录中查找 |
将匹配的文件输出到标准输出(默认功能) | |
! | 取反 |
-a | 英文名称为and,表示取交集。 |
-o | 英文名称为or,表示取并集。 |