find命令
用途: 查找文件
用法: find 路径 选项 参数
常用选项:1
2
3
4
5
6
7
8
9
10
11
12
13-print: 以`\n`作为每个匹配项文件名的分隔符(每行一个文件名),默认输出选项就是(-print)
-print0:以`\0`作为每个匹配项文件名的分隔符(都输出在同一行)主要是用于一些名称中存在换行符的时候。
-name: 用于指定文件名样式,大小写敏感
-iname:作用于name相同,忽略大小写
-path:将文件路径作为整体进行样式匹配
-regex:与`-path`作用相同,只是通过正则表达式指定匹配样式
-maxdepth:设置最大目录层级
-mindepth:设置最小目录层级
!:否定参数,用于否定查找,比如当前文件夹下所有非txt文件 ` find . ! -name "*.txt"
-delete:删除匹配的文件
-perm:根据权限值查找
-user:根据特定用户查找(查找特定用户拥有的文件)
-exec:对找到的文件执行后续命令
根据文件类型查找
使用选项参数-type
可以查找指定类型的文件。
文件类型:
- f:普通文件
- l:符号链接
- d:目录文件
- c:字符设备
- b:块设备
- s:套接字
- p:FIFO
eg.find . -type f -user test
查找当前目录下所有test用户的文件
根据时间查找
linux系统有三种时间戳:访问时间、修改时间、变化时间。
根据访问时间查找可以通过-atime 天数
或-amin 分钟数
两个不同单位选项来查找。
根据修改时间查找可以通过-mtime 天数
或-mmin 分钟数
两个不同单位选项来查找。
根据变化时间(文件属于源修改时间)查找可以通过-ctime 天数
或-cmin 分钟数
两个不同单位选项来查找。
在根据时间查找时,时间戳前加 -
表示小于时间戳时间长度,+
表示大于时间戳长度 什么都不加表示等于
eg.
find . -type f -atime -7
查找当前目录最近七天内被访问过的所有文件
find . -type f -atime 7
查找当前目录恰好在七天前被访问过的所有文件
find . -type f -atime +7
查找当前目录超过七天前被访问过的所有文件(即最近七天没有被访问)
根据文件大小搜索
文件单元前加+
表示大于;加-
表示小于;不加代表等于。
文件大小单元:
- b:块(512字节)
- c:字节
- w:字(2字节)
- k
- M
- G
eg.find . -type f -size 2k
查找当前目录等于2k的文件
sort命令
用途:sort主要是对输入进行排序
常用参数:1
2
3
4
5
6
7
8-c:检查文件是否已经有序
-m:将几个排序好的文件合并(注意必须是排序好的)
-M:将前面三个字母按照月份的缩写进行排序
-o<输出文件>:将排序结果存入指定的文件
-n:按照数值大小排序
-k:设置排序键(列)
-t:键(列)分隔符,一般配合-k使用
-u:忽略向同行,和uniq命令相同
eg.
假设unsort.txt文件数据为1
2
3
4
5
6aaa:30:1.6
ccc:50:3.3
ddd:20:4.2
bbb:10:2.5
eee:40:5.4
eee:60:5.1
对第二列(从1开始)按照数字大小排序
sort -nk 2 -t: unsort.txt
命令解析:-k 2
设置第二列为键值,-t:
设置列分隔符为:
输出结果:1
2
3
4
5
6bbb:10:2.5
ddd:20:4.2
aaa:30:1.6
eee:40:5.4
ccc:50:3.3
eee:60:5.1
uniq命令
用途:用于报告或忽略文件中的重复行,一般与sort结合使用。
比较常用参数:
1 | -c:在每列旁边实现重复出现的次数 |
uniq命令在使用-u
、-d
、-c
参数时要求输入必须是有序的这也是为什么一般和sort结合使用的原因。
eg.
删除重复行:
1
2
3
4
5sort file.txt | uniq
或者
sort -u file.txt
或者
uniq file.txt
统计各行次数:
1
sort file.txt | uniq -c
显示只出现过一次的行:1
2
3uniq -u sorted.txt sorted.txt 已排序
或者
sort file.txt | uniq -u
显示出现多次的行:1
2
3uniq -d sotred.txt
或者
sort file.txt | uniq -d