原文链接:find、grep、wc使用方法简单总结
发布时间:2016-06-09 09:54:43
简单总结一下几个常用的 Linux 命令。
一、find
用来查找特定文件,在 Linux 下一切皆是文件,因此十分有用。
基本格式:find path expression [-exec command {} \;],默认会遍历子目录。
1. 查找 /home/work/ 下所有以 .cpp 结尾的文件(目录也会匹配):
1 | find /home/work/ -name "*.cpp" |
2. 只查找普通文件(-type f 排除目录):
1 | find /home/work/ -type f -name "*.cpp" |
3. -iname 忽略大小写,-name 精确匹配:
1 | find /home/work/ -iname "*.cpp" |
4. 同时查找多个目录:
1 | find /home/work/ /etc/ /usr -name "*.cpp" |
扩展——查找 a.cpp 或 b.cpp:
1 | find /home/work/ /etc/ /usr -name "[ab].cpp" |
? 表示任意一个字符:
1 | find /home/work/ /etc/ /usr -name "?.cpp" |
5. 按大小查找,+20M 大于 20M,-20M 小于 20M:
1 | find /home/work/ -size +20M |
6. 按访问时间查找,-5 表示 5 天内访问过,+5 表示超过 5 天未访问:
1 | find /home/work -atime -5 |
用
stat命令可获得相关时间戳:
atime— 最近一次访问时间mtime— 最近一次内容修改时间ctime— 最近一次属性修改时间以上单位是天;
amin、mmin、cmin单位是分钟。
7. 组合条件——5 天内访问过 且 小于 1M:
1 | find /home/work -atime -5 -a -size -1M |
-a与连接-o或连接-not条件取反
二、grep
用来匹配特定的文本行,全称 Global Regular Expression Print。
基本格式:grep [OPTIONS] PATTERN [FILE...]
1. 在当前目录所有文件中查找含 hello 的行:
1 | grep "hello" ./* |
加 -r 遍历子目录:
1 | grep -r "hello" ./* |
2. 常用参数:
| 参数 | 作用 |
|---|---|
-i |
忽略大小写 |
-n |
显示行号 |
-c |
只显示匹配到的行数 |
-l |
只显示匹配到的文件名 |
-v |
反向匹配,显示未匹配的行 |
三、wc
文本统计工具,全称 word count,能将文件的行数、字数、字节数打印出来。
1. 统计行数:
1 | wc -l test.txt |
2. 统计字节数:
1 | wc -c test.txt |
3. 统计字数(单词由空格、tab、换行符分割):
1 | wc -w test.txt |
4. 统计字符数(与字节数不同,一个中文字符占 3 字节):
1 | wc -m test.txt |
四、实例操作
1. 统计 /home/work/ 下所有 .txt 文件个数(排除目录):
1 | find /home/work/ -type f -name "*.txt" | wc -l |
2. 删除 /home/work/ 下所有 .txt 文件:
1 | find /home/work/ -type f -name "*.txt" -exec rm -f {} \; |
-exec 后跟执行动作,{} 代表查找到的文件,\; 表示命令结束(注意 {} 和 \; 之间有空格)。
也可以用 xargs:
1 | find /home/work/ -type f -name "*.txt" | xargs rm -f |
3. 统计 /home/work 当前目录下有多少普通文件(不遍历子目录):
1 | ls /home/work -l | grep '^-' | wc -l |
-l 显示文件属性,开头 - 表示普通文件,'^-' 匹配以 - 开头的行,从而排除目录。
以上仅为简单总结,之后再继续补充。