Linux中习惯把被操作的对象放在最后,参数等放中间
例:find [参数] [路径] [条件] [处理对象]
find(在目录下查找符合条件的文件)
首先,Linux中一切皆文件。“在目录下查找符合条件的文件”,这是说的“文件”包括Windows中所谓的目录即文件夹
一、参数
-P、-L、-H
二、路径
相对路径和绝对路径均可。
三、条件
1)根据名称查找
-name ‘a*’ 查找以 a 开头的文件
-iname ‘a*’ 查找以 a或A 开头的文件
-name ‘*.txt’ 查找以 .txt 结尾的文件
2)根据文件类型查找
-type f 查找普通文件
-type d 查找目录文件
-type l 查找链接文件
-type b 查找块设备文件
-type c 查找字符设备文件
-type p 查找管道文件
-type s 查找套接字文件
3)根据文件从属关系查找
-user king 查找用户king拥有的文件
-group user1 查找组名为user1拥有的文件
-uid 500 查找用户ID为500的用户拥有的文件
-gid 0 查找组ID为0的用户拥有的文件
-nouser 查找没有所属者的文件
-nogroup 查找没有所属组的文件
4)根据文件大小查找【常用单位:k, m, g】
-size 5k 查找小于等于5K的文件
-size -6k 查找小于6K的文件
-size +2g 查找大于2G的文件
-size +3m -a -size -6m 查找3M到6M之间的文件【-a:与】
-size +3k -o -size +4k 查找大于3K或6K之间的文件【-o:或】
5)根据时间戳查找
atime:文件最后被读取或访问的时间
mtime:文件最后修改的时间
ctime:文件状态改变的时间
【!!!不是以“天”为单位,而是以“24小时”为单位】
amin、mmin、cmin 【以“分钟”为单位】
例:
find -atime +1 当前时间的前24小时以前
find -atime 1 当前时间的前24小时以前到当前时间的前48小时以后
find -atime -1 当前时间的前24小时以后
find -atime 2 当前时间的前224(48)小时以前到当前时间的前224+24(72)小时以后
find -atime +2 当前时间的前48小时以前
find -atime -2 当前时间的前48小时以后
以此类推
6)根据权限查找
find -perm 772 查找完全匹配772的权限的文件
find -perm -444 查找三类用户都拥有读权限的文件
find -perm -774 查找前两类用户拥有完全控制权并且其他用户拥有读权限的文件
find -perm /327 只要第一类用户拥有可读和可执行两个权限中的一个,或者第二类用户可读权限,或者第三类用户拥有可写、可读、可执行三个权限中的任一个的文件都会被查到
grep(在文件中进行文本搜索并打印)
一、参数:
-i:忽略字符的大小写
-n:显示行号
-color:对查询的关键字符进行高亮显示
-o:仅显示匹配到的字符串本身
-v:显示不被模式匹配到的行
-q:静默模式,即不输出任何信息
-A #:显示被模式匹配的行及其后#行
-B #:显示被模式匹配的行及其前#行
-C #:显示被模式匹配的行及其前后各#行
-G:支持基本正则表达式
二、正则表达式元字符:
‘^‘: 匹配行首
‘$’: 匹配行尾
‘.‘: 匹配任一一个字符
‘*’: 匹配零个或多个先前字符
‘[]‘: 匹配一个指定范围内的字符 | ‘[^]’匹配指定范围外的任意单个字符
以下用到转义字符‘\’的查询条件必须有引号
‘<‘或‘\b’:匹配词首
‘>’或‘\b’:匹配词尾(可用<PATTERN>:匹配完整单词)
‘?‘:匹配其前面的字符0次或者1次;
‘+’:匹配其前面的字符1次或者多次;
‘{m}‘:匹配其前面的字符m次(\为转义字符)
‘{m,n}’:匹配其前面的字符至少m次,至多n次
‘()’:将多个字符当做一个整体进行处理
特殊匹配方式
[:space:] 匹配空格
[:digit:] 匹配任意单个数字
[:lower:] 匹配任意单个小写字母
[:upper:] 匹配任意单个大写字母
[:alpha:] 匹配任意单个字母
[:alnum:] 匹配任意单个字母或数字
[:punct:] 匹配任意单个符号