本文为原创文章,转载请标明出处

目录

  1. 文件名通配符

    • 单字符匹配元字符 ?
    • 多字符匹配元字符 *
    • 字符范围匹配符 []
    • 排除范围匹配符 [!]
  2. 命令中的正则表达式
    • 单字符匹配符 .
    • 单字符或字符串重复匹配符 *
    • 行首匹配符 ^
    • 行尾匹配符 $
    • 反斜杠屏蔽符 \
    • 范围匹配符 [] 和排除范围匹配符 [^]
    • 词首词尾匹配符 \< \>
    • 重复次数匹配符 x\{\}
  3. 查找文件工具 find
    • 按文件名查找
    • 按文件权限查找
    • 按文件类型查找
    • 按文件时间戳记查找
    • 按文件大小查找
    • 按文件属主或属组查找
    • 使用 execok 处理查找到的文件
    • 使用 xargs 处理查找到的文件
  4. 查找文本工具 grep
  5. 转换和删除重复命令 tr
  6. 合并和分割工具
    • 排序 sort
    • 数据剪切 cut
    • 数据粘贴 paste
    • 数据连接 join
    • 去除重复 uniq
    • 分割文件 split

1. 文件名通配符

单字符匹配元字符 ?

匹配任意一个字符

多字符匹配元字符 *

匹配0或1或多个字符

字符范围匹配符 []

匹配一个字符范围,其表现形式可以是“-”表示的字母和数字的范围,也可以是几个字符的组合

排除范围匹配符 [!]

不匹配符号内出现的字符组合或字符数字范围

2. 命令中的正则表达式

单字符匹配符 .

匹配任意一个字符

单字符或字符串重复匹配符 *

匹配单个字符或一个字符串序列的一次或多次重复出现

行首匹配符 ^

在匹配中指示行首位置字符串或模式

行尾匹配符 $

在匹配中指示行尾位置字符串或模式

反斜杠屏蔽符 \

屏蔽一些特殊字符的特殊含义

范围匹配符 [] 和排除范围匹配符 [^]

与文件名通配符中的范围匹配符和排除范围匹配符用法基本相同

词首词尾匹配符 \< \>

在文本开头或文本结尾匹配与单词开头或单词结尾相匹配的特定的字符串或模式

重复次数匹配符 x\{\}

可以精确匹配字符或字符串连续出现的次数或次数范围

3. 查找文件工具 find

基本格式

# find [path] [expression]

参数:

depth:先从当前目录查找,然后再从当前目录的子目录中查找
maxdepth LEVELS:向下搜索到第LEVELS层目录,LEVELS为0表示只在当前目录查找
mindepth LEVELS:至少向下搜索LEVELS层目录
mount:不搜索远程文件系统
follow:搜索如果遇到链接文件就连同链接所指向的文件一并查找 name:按文件名查找
iname:按文件名查找,不区分大小写
perm:按文件权限查找
tye:按文件类型查找
mtime +n[-n]:按文件内容改变的时间查找,+n表示修改时间距现在n天前,-n表示修改时间距现在n天以内
ctime +n[-n]:按文件属性改变的时间查找
atime +n[-n]:按文件访问的时间查找
size +n[-n]:按文件大小查找,+n表示文件大小大于n,-n表示文件大小小于n,n表示块,1块等于512字节
user:按文件所属主查找
group:按文件所属组查找
nouser:查找没有有效属主的文件
nogroup:查找没有有效属组的文件 prune:不再指定目录中查找
print:将查找的文件输出到标准输出
exec:对查找到的文件执行shell命令
ok:对查找到的文件执行shell命令,在每次执行前提示用户是否执行

按文件名查找

如:

# find /etc -name "*.conf"

按文件权限查找

如:

# find /etc -perm 664

按文件类型查找

如:

# find /dev -type b

按文件时间戳记查找

如:

# find /var/log -mtime -1

按文件大小查找

如:

# find /var/log -size +1M

按文件属主或属组查找

如:

# find / -user root

使用 execok 处理查找到的文件

如:

# find /var/log -size +1M -exec ls -l {} \;

使用 xargs 处理查找到的文件

如:

# find ~/ -name "test.txt" | xargs rm

4. 查找文本工具 grep

grep:global regular expression print 全局正则表达式打印

# grep [option] [pattern] [file]

参数

i:忽略大小写
n:将结果输出的同时,也输出该行行号
s:在没有查找到匹配的内容时,不显示错误信息
l:从多个文件中查找时,只输出找到匹配内容的文件名称
h:从多个文件中查找时,只输出匹配的内容,不显示文件名称
c:只输出匹配内容的总行数
v:反转查找,即输出匹配内容以外的行

例如:

查询来自云南和河南的学生信息
# grep -E 'Yunnan|Henan' students

5. 转换和删除重复命令 tr

# tr [option] [string1] [string2]

参数

c:使用string1中字符的补集替换
d:删除string1中包含的所有字符
s:删除重复字符

例如:

小写转大写
# tr -s "a-z" "A-Z" <test
删除所有重复字母
# tr -s "[a-z][A-Z]"

6. 合并和分割工具

排序 sort

# sort [option] [file]

参数

b:按字段进行分类并忽略前面的空格或制表符
d:按字典的顺序进行排序,将除空格和字母以外的字符排除
f:忽略大小写
g:根据数值进行排序
i:只考虑可打印的字符
M:将字符按月份进行比较,例如JAN<...<DEC
n:按数值进行比较排序
r:返向排序
c;测试文件内容是否已经进行了排序,若无任何返回信息,则表示已经执行了排序操作
k:指定排序的关键字
m:合并已经排序的文件,不进行排序
o:将结果写入文件,不再输出到标准输出上
s:通过屏蔽最后的分类比较稳定排序
t:使用指定的字符作为字段分隔符
T:将临时文件放入指定的目录内
u:如果与参数c一起使用,则检查是否在排序时已经去除重复的行,没有参数c时,则在排序时去掉重复行
z:用一个0字节作为结束,而不是一个换行符

例如:

对students文件第5个字段第8个字符按数字从大到小排序
# sort -k5.8nr students
先对students文件第5个字段排序,再按第10个字段排序
# sort -k 5,10n students
指定“#”作为字段分隔符,并对students文件第三个字段进行排序
# sort -t# -k3 students
合并students1,students2到students_new
# sort -m students1 students2 >students_new

数据剪切 cut

cut [option] [file]

参数

b:表示要操作的对象是字节
c:表示要操作的对象是字符
f:表示要操作的对象是字段
d:指定字段分隔符,默认情况下是制表符tab
s:表示不包括没有字段分隔符的行 N:表示第N个字节
N-:表示从N到一行结束的内的所有文本
N-M:表示从N到M之间的所有文本
-M:表示从开始到M之间的所有文本
-:从开始到结束的所有文本

例如:

剪切students文件所有行的前10个字符
# cut -b-10 students
以“#”为分隔符,并对students文件第1,2,4个字段进行剪切
# cut -d# -f1-2,4 students

数据粘贴 paste

paste [option] [file...]

参数

d:对新生成的文本指定新的字段分隔符,默认情况下是制表符tab
s:横向粘贴,默认纵向粘贴

例如:

纵向粘贴paste1,paste2文件
# paste paste1 paste2

数据连接 join

# join [option] file1 file2

参数

a:用于输出2个文件中有关联和没关联的行,将有关联的行执行连接后输出,没关联的行按预定的格式输出
e:在文件1和文件2中查找关联字段,如果没有关联字段,则将无关联字段的行相应的字段用参数指定的字符串替代
i:在连接过程中忽略大小写
j:使用指定的字段作为关键字段连接
o:格式化输出
t:设置字段间的分隔符,默认为空格或制表符tab
v:与参数a的作用相同,但参数v只输出无关联的行

例如:

指定使用文件1的第2个字段和文件2的第2个字段作为关键字,只显示文件1的第1、2、6字段和文件2的第3字段
# join -j1 2 -j2 2 -o "1.1,1.2,1.6,2.3" students1 students2

去除重复 uniq

#uniq [option] [input[option]]

参数

c:输出重复行的重复次数
d:仅输出重复的行
f:忽略一些字段,只比较指定字段
s:忽略一些字符,只比较指定字段
i:忽略大小写
u:输出不重复的行
w;指定要比较的字符位置

sort -uuniq 区别

sort -u 将整个文本重复行删除只保留一行

uniq 删除连续重复行只保留一行

例如:

忽略第1个字段,从第2个字段第2个字符处开始比较
# uniq -f1 -s3 char

分割文件 split

# split [option] [input file] [output file]

参数

l:按行对文件进行分割
b:按字节对文件进行分割
C:按字符对文件进行分割
d:使用数字作为输出文件的后缀

例如:

指定每3行划分为一个文件
# split -l 3 students students

如有不当之处,请予指正,谢谢~

Linux查找和筛选工具的更多相关文章

  1. Linux查找并删除重复文件的命令行fdupes工具,dupeGuru图形工具

    查了几十个网页,找到这个接近满意的解决方案http://unix.stackexchange.com/questions/146197/fdupes-delete-files-aft... 不过正则里 ...

  2. [转帖]Linux查找文件6个高效工具

    Linux查找文件6个高效工具 https://www.linuxrumen.com/rmxx/176.html 需要实操 -inname -type 等等. 1. 前言 我们使用Linux过程中,经 ...

  3. 又一款linux提权辅助工具

    又一款linux提权辅助工具 – Linux_Exploit_Suggester 2013-09-06 10:34 1455人阅读 评论(0) 收藏 举报 https://github.com/Pen ...

  4. 24小时学通Linux内核--内核探索工具类

    寒假闲下来了,可以尽情的做自己喜欢的事情,专心待在实验室里燥起来了,因为大二的时候接触过Linux,只是关于内核方面确实是不好懂,所以十天的时间里还是希望能够补充一下Linux内核相关知识,接下来继续 ...

  5. linux下C++开发工具

    就C++开发工具而言,与Windows下微软(VC, VS2005等)一统天下相比,Linux/Unix下C++开发,可谓五花八门,各式各样.Emacs, vi, eclipse, anjuta,kd ...

  6. linux查找进程id端口占用和杀死进程

    linux 查找进程id端口占用和杀死进程 ps 命令用于查看当前正在运行的进程 辅助上grep 用于搜索匹配ps -ef | grep java ps ax : 显示当前系统进程的列表 ps aux ...

  7. Linux —— 查找与替换

    Linux —— 查找与替换 文本查找: grep, egrep, fgrep        grep:根据基本正则表达式定义的模式搜索文档,并将符合模式的文本行显示出来        注意:搜索时属 ...

  8. Linux shell文本处理工具

    搞定Linux Shell文本处理工具,看完这篇集锦就够了 Linux Shell是一种基本功,由于怪异的语法加之较差的可读性,通常被Python等脚本代替.既然是基本功,那就需要掌握,毕竟学习She ...

  9. linux入门系列3--常见的linux远程登陆管理工具

    服务器一般是云服务器或者放置在机房,我们日常工作中通过远程连接工具连接到服务器进行操作,这类工具很多(如SecureCRT.XShell.Putty.FinallShell.TeamViewer以及w ...

随机推荐

  1. 马士兵讲jsp项目--BBS项目分析笔记

    1 导言 作为一个新手JAVA程序员,我相信很多人和我一样急切的想要寻找项目来做,这里我把马士兵老师讲的JAVA WEB的第一个小项目拿过来给大家分享一下. 首先,对一个项目而言我们先要认识清楚我们要 ...

  2. 深度学习框架-caffe安装-环境[Mac OSX 10.12]

    深度学习框架-caffe安装 [Mac OSX 10.12] [参考资源] 1.英文原文:(使用GPU) [http://hoondy.com/2015/04/03/how-to-install-ca ...

  3. JS中的phototype JS的三种方法(类方法、对象方法、原型方法)

    JS中的phototype是JS中比较难理解的一个部分 本文基于下面几个知识点: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个 ...

  4. C语言格式化输入输出

    %i和%d之间的区别 作为匹配整数的转换说明,printf格式串中两者并没有区别,但是在scanf格式串中%d只能匹配十位制整数,而%i可以匹配八进制(前缀为0,如086).十进制或十六进制(前缀0x ...

  5. JAVA实用案例之邮件发送

    最近有朋友问邮件怎么发送,就简单写了个demo,因为懒得找jar包,所以项目是创建的maven工程,具体的maven引用的jar如下: <dependency> <groupId&g ...

  6. Windows环境下最新OpenCV和Contribute代码的联合编译

    解决这个问题,目的在于获得并使用最新的完全版本的代码,主要方法是对CMake能够熟练使用,并且对编译等基础支持有所了解. 一.工具的准备 1 tortoisegit www.tortoisegit.o ...

  7. iOS蓝牙交互(4.0)

    前期准备工作:查看coreBlueTooth框架,查看一些蓝牙名词:Central(中心设备).Peripheral(外围设备).advertisementData(广播数据).-RSSI: 信号强弱 ...

  8. Run Logic

    1.lr_output_message()函数,其作用是将内容输出到Replay Log中: 如果输出整数型内容,应该这样写; int x; x=10; lr_output_message(" ...

  9. 1011. A+B和C (15)

    /*1011. A+B和C (15) 时间限制150 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者HOU, Qiming给定区间[-231, 231]内的3个整数A ...

  10. MySQL在高版本需要指明是否进行SSL连接问题

    Java使用mysql-jdbc连接MySQL出现如下警告: Establishing SSL connection without server's identity verification is ...