grep
格式:grep 参数 查找内容 文件名
没有文件名默认为标准输入(一般来自管道)如果有xargs,则来自管道的输入视为文件名不能操作有空格的文件名 否则视为要查找的文本同时查找多个文件文件名采取正则形式grep 123 *.txt
find配合xargsfind -name *.txt | xargs grep 123
参数-E
支持正则-n
显示行号-i
不区分大小写-A n/ -B n
显示匹配行前/后n行内容 n最大为18-r
不局限与文件,在目录下递归查找含有内容的文件-l
只显示匹配的文件名,不显示内容-L
只显示不匹配的文件名-w
只匹配整个单词,而不是字符串的一部分^
和$
分别标注行首和行尾-v
反向匹配(可用来排除文件或内容)# 递归查找当前目录,不区分大小写,显示行号grep -irn .# 只显示匹配的文件名,不显示内容grep -lr 123 .# 只显示不匹配的文件名grep -Lr 123 .# 显示匹配 pattern1 或匹配 pattern2 的行grep -E "123|456" file# 显示既匹配 pattern1 又匹配 pattern2 的行grep 123 file | grep 234 | grep 345# 只匹配整个单词,而不是字符串的一部分grep -w magic file# 只匹配 hello开头的,而不是hello在中间的grep "^hello" file# 只匹配hello行,而不是行中含hellogrep "^hello\$" file# 不匹配txt和out文件grep 123 . | grep -v *.txt | grep -v *.outgrep 123 . | grep -Ev "\.txt|\.out"
grep的and, or, not 逻辑
# and 逻辑grep A file | grep B file# or 逻辑grep -E A|B file# not 逻辑grep -v A file
find
格式:find 路径 参数
-a
表示and,-o
表示or,-not
表示not-name
只支持shell通配符,如果需要支持正则,需要-regex
参数-ls
参数显示详细文件详细,而不只是文件名-maxdepth <num>
限制查找深度# 根据名字find path -name filename# 根据修改时间# c代表修改,a代表访问# time代表天数,min代表分钟# -n 代表n分钟/天内, +n 代表n分钟/天前find path -ctime -10 find path -amin +5# 查找比某文件更新的文件find path -newer filename# 根据文件类型 -type# d 代表目录, f 代表普通文件, l 代表软连接find path -type d# 根据文件大小 -size# +n 代表大于n字节,-n代表小于,都不加代表等于# 常用单位有k, M, Gfind path -size +1024Mfind path -size 0# 查找空文件或文件夹 -emptyfind path -empty# 多条件查找# -a 表示and, -o 表示or, -not 表示notfind . -size +0 -a -size -512
和管道命令共同操作 /cheyunhua/p/10168394.html
find . -type d | xargs lsfind .. -size +0 | grep -E "*.txt"