find命令
来源:互联网 发布:淘宝最好的减肥产品 编辑:程序博客网 时间:2024/05/18 13:27
Find命令扩展:exec
Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
语法
find path -option [ -print] [-exec -ok command ] {};
参数说明 :
find 根据下列规则判断 path和 expression,在命令列上第一个 - ( ) , !之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression是空字串则使用 -print为预设 expression。
expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
(一) -mount,-xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
(二) -amin n: 在过去 n 分钟内被读取过
(三) -anewerfile : 比文件 file 更晚被读取过的文件
(四) -atimen : 在过去 n 天过读取过的文件
(五) -cmin n: 在过去 n 分钟内被修改过
(六) -cnewerfile :比文件 file 更新的文件
(七) -ctimen : 在过去 n 天过修改过的文件
(八) -empty: 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
(九) -ipathp, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
(十) -namename, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
(十一)-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 文件类型是 c 的文件。
(十二)d: 目录
(十三)c: 字型装置文件
(十四)b: 区块装置文件
(十五)p: 具名贮列
(十六)f: 一般文件
(十七)l: 符号连结
(十八)s: socket
(十九)-pid n : process id 是 n 的文件
(二十)-print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串;
(二十一) -print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;
(二十二) -printf<输出格式>:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定;
(二十三) -fprint<列表文件>:此参数的效果和指定“-print”参数类似,但会把结果保存成指定的列表文件;
(二十四) -regex<范本样式>:指定字符串作为寻找文件或目录的范本样式;
(二十五) -exec<执行指令>:假设find指令的回传值为True,就执行该指令;
(二十六) -fls<列表文件>:此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件;
(二十七) -ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出;
(二十八) -ok<执行指令>:此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令;
你可以使用 ( )将运算式分隔,并使用下列运算。
(一)exp1-and exp2
(二)! expr
(三)-notexpr
(四)exp1-or exp2
(五)exp1,exp2
(六)-a 和 -o 都是短路求值,与 shell 的 && 和 || 类似如果
暴炒栗子:
1) 列出当前目录及子目录下所有文件和文件夹
find .
2) 在 /home目录下查找以.txt结尾的文件名
find /home -name "*.txt"
3) 同上,但忽略大小写
find /home -iname "*.txt"
4) 当前目录及子目录下查找所有以.txt和.pdf结尾的文件
find . \( -name "*.txt" -o -name"*.pdf" \) 或 find . -name "*.txt" -o -name"*.pdf"
5) 匹配文件路径或者文件
find /usr/ -path "*local*"
6) 基于正则表达式匹配文件路径
find . -regex".*\(\.txt\|\.pdf\)$"
同上,但忽略大小写
find . -iregex".*\(\.txt\|\.pdf\)$"
否定参数
1) 找出/home下不是以.txt结尾的文件
find /home ! –name "*.txt"
2) 根据文件类型进行搜索
find . –type 类型参数
类型参数列表:
l f 普通文件
l l 符号连接
l d 目录
l c 字符设备
l b 块设备
l s 套接字
l p Fifo
3) 基于目录深度搜索 向下最大深度限制为3
find . -maxdepth 3 -type f
4) 搜索出深度距离当前目录至少2个子目录的所有文件
find . -mindepth 2 -type f
5) 根据文件时间戳进行搜索
find . -type f 时间戳
UNIX/Linux文件系统每个文件都有三种时间戳:
l 访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。
l 修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间。
l 变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。
6) 搜索最近七天内被访问过的所有文件
find . -type f -atime -7
7) 搜索恰好在七天前被访问过的所有文件
find . -type f -atime 7
8) 搜索超过七天内被访问过的所有文件
find . -type f -atime +7
9) 搜索访问时间超过10分钟的所有文件
find . -type f -amin +10
10) 找出比file.log修改时间更长的所有文件
find . -type f –newer file.log
文件大小单元:
l b —— 块(512字节)
l c —— 字节 w —— 字(2字节)
l k —— 千字节
l M —— 兆字节
l G —— 吉字节
11) 删除当前目录下所有.txt文件
find . -type f -name "*.txt"-delete
12) 搜索大于10KB的文件
find . -type f -size +10k
13) 搜索小于10KB的文件
find . -type f -size -10k
14) 搜索等于10KB的文件
find . -type f -size 10k
(一)查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
$ find /var/logs -type f -mtime +7-ok rm { } ;
(二)查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
$ find . -type f -perm 644 -exec ls-l { } ;
(三)为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:
$ find / -type f -size 0 -exec ls-l { } ;
(四)查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
$ find /var/logs -type f -mtime +7-ok rm { } ;
- find 命令
- find 命令
- find 命令
- find命令
- find命令
- find 命令
- find命令
- FIND命令
- find 命令
- find命令
- find命令
- find 命令
- Find命令
- find命令
- FIND 命令
- find命令
- find 命令
- find命令
- ANR源码分析之Broadcast Timeout
- SDN,RYU 控制器报错解决
- jquery做简单的轮播图
- Git 常用命令及讲解(不断更新)
- 通过git bash把本地项目上传到GitHub上(操作之后总结)
- find命令
- float浮点数比较问题
- 安装win7/Ubuntu双系统
- React native 开发遇到的问题汇总
- 欧拉函数
- 面试必备技能
- 学习了《第一行代码》4.5章—一个简易版的新闻应用
- Alice, Bob, Two Teams codeforces 632B
- 回叫信道