1.11 find+grep+正则表达式

起初登录Ubuntu但是无法连接xshell是因为没有ssh服务,所以通过下载相应的服务以后完成ssh连接

sudo apt-get install openssh-server     //下载相应服务
ps -e | grep ssh         //查看是否启动,显示ssd则成功,如果只有ssh—agent还需要进行启动
/etc/init.d/ssh start      //启动服务

在使用xshell进行ssh连接,连接成功!!

find

打印操作

\0表示空字符,也就是说

-print0表示将\n转化为\0,将转行变为空字符

文件名

搜索经常使用的是-name以及-path区别在于:

-name:查找的是文件名basename

-path:查找的是目录名+文件名,basename+dirname

此处正好我们讲到通配符,什么是通配符呢,是可匹配任意类型的符号,比如上述出现的“*.log”等,通配符是基于字符顺序的[a-z]指的是小写字符a到z;[A-Z]指的是大写字符A到Z;[a-zA-Z]表示大小写字母a到z。关于数字的通配符只能匹配单个字符,比如[1-9]是数字1到9;[1-20]是数字10,20,在每个数字后边加个0

根据文件类型搜索

因为分为目录文件以及普通文件,所以说普通文件为f,目录文件为d

搜索空文件只需要在最后边加一个-empty

根据文件时间搜索文件

一个文件也有三种时间,分别是:访问时间atime、修改时间mtime、状态时间ctime,分别为Access time、Modify time、Change time

访问时间:对文件进行一次读操作,它的访问时间就会改变。例如像:cat、more等操作,但是像之前的state还有ls命令对atime是不会有影响的;

修改时间:文件的内容被最后一次修改的时间,我们经常用的ls -l命令显示出来的文件时间就是这个时间,当用vim对文件进行编辑之后保存,它的mtime就会相应的改变;

状态时间:当文件的状态被改变的时候,状态时间就会随之改变,例如当使用chmod、chown等改变文件属性的操作是会改变文件的ctime的。

根据文件大小搜索文件

根据权限搜索文件

一、常见的文件权限有3种,即对文件的读(用r表示)、 写(用w表示)、 执行(用x表示,针对可执行文件或目录)权限。

r:读取权限,数字代号为:"4"。
w:写入权限,数字代号为:"2"。
x:执行或切换权限,数字代号为:"1"。

示例:drwxrwxr-x 8 root root 4096 6月 23 15:18 Simon
解析 "drwxrwxrwx",这个权限说明一共10位。


第一位代表文件类型,有两个数值:“d”和“-”,“d”代表目录,“-”代表非目录。


后面9位可以拆分为3组来看,分别对应不同用户:2-4位代表所有者user的权限说明,5-7位代表组群group的权限说明,8-10位代表其他人other的权限说明。
r代表可读权限,w代表可写权限,x代表可执行权限。

所以,“drwxrwxrwx” 表示所有用户都对这个目录有可读可写可执行权限。

二、修改文件夹或文件的可读可写可执行权限
可以使用 chmod (change mode) 命令来改变文件或目录的访问权限,权限可以使用符号或数字来表示。

u 代表拥有者(user)
g 代表拥有者所在的组群(group)
o 代表其他用户,但不是u和g (other)
a 代表全部的人,也就是包括u,g和o
+:为文件或目录增加权限
-:删除文件或目录的权限
=:设置指定的权限

示例:
chomd u+wx test 增加test目录中拥有者可写和可执行的权限
chomd g+wx test 增加test目录中拥有者所在的组群可写和可执行的权限
chmod go-rw test 删除test目录中组群和其他用户的可读和可写的权限

除了符号,也可以使用八进制数字来指定具体权限,如下表所示:
0:没有任何权限 :---
1:执行权限 :--x
2:写入权限 :-w-
3:执行权限和写入权限:1 (执行) + 2 (写入) = 3 :-wx
4:读取权限 :r--
5:读取和执行权限:4 (读取) + 1 (执行) = 5 :r-x
6:读取和写入权限:4 (读取) + 2 (写入) = 6 :rw-
7:所有权限: 4 (读取) + 2 (写入) + 1 (执行) = 7 :rwx

示例:
chmod 777 test 给test这个目录赋予所有人可读可写可执行权限,4+2+1=7。
-rw——- (600) 只有所有者才有读和写的权限
-rw-r–r– (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
-rwx—— (700) 只有所有者才有读,写,执行的权限
-rwxr-xr-xr (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
-rwx–x–x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
-rw-rw-rw- (666) 每个人都有读写的权限

搜索文件后并进行删除

搜索指定日期范围的文件

使用-newermt

或者使用-newer通过两个临时文件来进行比对参照

xargs并行功能

有时候想要搜索的文件找不到路径,就要从根目录进行搜索,这个时候搜索时间非常的长,为了缩短搜索时间,采用并行可以减少搜索文件的时间,使用xargs的并行功能,多进程处理文本文件

相关链接:xargs原理剖析及用法详解 - 骏马金龙 - 博客园 (cnblogs.com)

搜索文件的绝对路径(全路径)

因为find管道后的文件搜索为相对路径,并不是绝对路径(全路径),因此我们使用$(pwd)、$PWD、使用bash的波浪号扩展 `~+`来查找文件的绝对路径

获取文件名部分

相关链接:Linux技巧:介绍从目录路径获取文件名和目录前缀的方法 - 南木阁 - SegmentFault 思否

从结果中排除目录自身


grep

grep更适合单纯的查找或匹配文本,Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来(匹配到的标红)。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。

  egrep = grep -E:扩展的正则表达式 (除了< , > , \b 使用其他正则都可以去掉\)

命令格式

grep` `[option] pattern ``file

option:选项

pattern:默认模式即为正则表达式,不指定模式时,将打印目标文件的每一行

命令的功能

过滤特定字符

命令参数:选项option

-A n 追加显示结果行后面n行
-B n 追加显示结果行前面n行
-C n 追加显示结果行前后n行,默认 -C 2,表示 -A 2 -B 2
-c, --count 显示搜索结果数量
-o 只打印匹配结果部分
-E 使用扩展版正则表达式匹配,相当于执行 egrep
-F 使用静态字符串匹配,相当于执行 fgrep
-z 先解包再搜索,相当于执行 zgrep
-e pattern 表示后续字符串为目标正则表达式,主要用于同时使用多个 -e 匹配多个模式,也用于正则表达式开头为 - 的场合(消除歧义)
-v 反向搜索,打印不匹配搜索模式的结果
-q,--quiet,--silent 非贪婪式搜索,搜到一个结果时停止继续搜索该文件
--exclude,--exclude-dir pattern 排除非目标搜索文件或目录,高优先级
--include,--include-dir pattern 仅搜索目标文件或目录,低优先级
-f file 指定搜索某个文件
-H,-h 打印、不打印文件名
-n 显示行号,从 1 开始
-I 忽略二进制文件
-i 忽略大小写,默认大小写敏感
-L 仅列出打印不含目标搜索结果的文件
-l 仅列出打印包含目标搜索结果的文件
-m n 仅显示前n个结果
-R 递归扫描子文件夹
-S 递归扫描时,追踪扫描符号链接文件、目录,默认不追踪(等同于指定 -p)
-s 静默模式,忽略错误文件
-w,-x 正则模式作为单个完整单词、完整行进行搜索

进行演练非常重要!!!!!!

正则表达式

知识点链接:正则表达式 – 教程 | 菜鸟教程 (runoob.com)

贪婪匹配指的是最大匹配原则,非贪婪指的是最小匹配原则。实现非贪婪则增加一个?则变为最小匹配原则,默认情况下,正则表达式将进行贪婪匹配

贪婪

默认情况下,正则表达式将进行贪婪匹配。所谓“贪婪”,其实就是在多种长度的匹配字符串中,选择较长的那一个。例如,如下正则表达式本意是选出人物所说的话,但是却由于“贪婪”特性,出现了匹配不当

非贪婪

当我们期望正则表达式“非贪婪”地进行匹配时,需要通过语法明确说明:

{2,5}? 捕获2-5次,但是优先次数少的匹配

在这里,问号?可能会有些让人犯晕,因为之前他已经有了自己的含义:前面的匹配出现0次或1次。其实,只要记住,当问号出现在表现不定次数的正则表达式部分之后时,就表示非贪婪匹配。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值