linux查看upu使用情况,Linux下find与exec的联手干大事

在Linux下工作,find命令绝对是一个非常高频的命令。我们可以用find命令来找到符合某些关键词的文件,找到某些日期的文件,也可以设定一些正则表达式,找到一系列满足该条件的文件。

但是,如果只有一个find命令的话,我们仅能将文件找出来,列在终端里。仅一个find命令还不足以再做进一步的操作。

比如说,我们想把项目文件夹里的中间文件(*.o文件)找出来,再把它们全部删除;再如,我们想把日志文件夹下3天以上的日志全部转移到指定文件夹下;等等诸如此类的需求,还有非常多。

像这样的,我们想用find命令找到相关文件,再作进一步操作,该如何进行呢?这时候exec命令就派上用场。

我们先来看看exec的基本用法。

-exec参数后面跟的就是我们想进一步操作的命令,比如rm,mv等等。exec是以分号";"作为结束标识符的,考虑到各个系统平台对分号的不同解释,我们在分号前再加个反斜杠,便于移植。而在分号前,通常也会有一对花括号{},代表前面find命令查找出来的文件各。

我们直接通过几个实例来讲解find与exec联合用法。为了演示的方便,我们假定有如下的一个项目文件夹:

![](https://i.loli.net/2018/12/08/5c0bc34e1a005.jpg)

**实例1:使用find命令查找相关文件后,再使用ls命令将它们的详细信息列出来**

我们现在想把当前目录下所有的.o文件全部找出来,并用 ls -l 命令将它们列出来。实现这个需求的命令如下:

```

find . -name "*.o" -type f -exec ls -l {} \;

```

结果如下:

![](https://i.loli.net/2018/12/08/5c0bc369a636e.jpg)

在这里,我们用find 命令匹配到了当前目录下的所有.o文件,并在 -exec 选项中使用 ls -l 命令将它们的详细信息列出来。

**实例2:使用find命令查找相关文件后,再使用rm命令将它们删除**

我们现在想把当前目录下所有的.o文件全部找出来,并用rm命令将它们删除。实现这个需求的命令如下:

```

find . -name "*.o" -exec rm {} \;

```

执行完这个命令后,该目录下所有的.o文件都被删除。由于这个动作完成后也不会有任何提示,所以就没有截图的必要了。

**实例3:使用-exec选项的安全模式,将对每个匹配到的文件进行操作之前提示用户**

在实例2中,我们匹配到文件后就立刻执行rm命令,这样操作有些危险,因为如果一旦误操作,有可能会引起灾难性的后果。

exec的安全模式就是为了避免这个问题而产生。它会在匹配到某个文件后,在进行操作之前会先问一下你,经过你的确认它才会进行相应操作。

同样的实例2的需求,如果采用安全模式的话,命令是这样的:

```

find . -name "*.o" -ok rm {} \;

```

执行结果如下:

![img](https://mmbiz.qpic.cn/mmbiz_png/YeUmRxGrEBbgCd07jgXMiaqia9az0iaRVKudleUZT45CvsOknic56yO0UT0BTbfKlRxnM3yCicQJibOkVJvUAjozbzHQ/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1)

**实例4:搜索匹配到的文件中的关键内容**

假如我现在有个很大型的项目(如Linux内核),我想在里面搜索一个含有某关键字的文件。我们可以使用grep命令检索所有的文件。这样做肯定是可以的,但如果项目很大的话,这样太耗时了,效率太低。

我们可以先用find命令找到所以相关文件,然后再用grep命令检索那些文件即可。因为已经使用find过滤一遍了,所以这样操作会节约很多时间,提高效率。

命令如下:

```

find . -name "*.h" -exec grep -rns "hello" {} \;

```

结果如下:

![img](https://mmbiz.qpic.cn/mmbiz_png/YeUmRxGrEBbgCd07jgXMiaqia9az0iaRVKupufib6gV61xVxCcWf05fsSxzEeaUegcibTFicmSswZbJyh54sDFh84C8w/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1)

**实例5:查找文件并移动到指定目录**

这个需求就比较简单了。比如我现在想把所有的.o文件找出来,然后新他们mv到buil目录。命令如

下:

```

find . -name "*.o" -exec cp {} build \;

```

结果如下:

![img](https://mmbiz.qpic.cn/mmbiz_png/YeUmRxGrEBbgCd07jgXMiaqia9az0iaRVKuaozeXLsfglQGEeeguBjVa155DZ8MEic9ZSx5h8guAJOLCKw8RXawvnw/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1)

更多精彩内容,请关注公众号**良许Linux**,公众内回复**1024**可免费获得5T技术资料,包括:**Linux,C/C++,Python,树莓派,嵌入式,Java,人工智能**,等等。公众号内回复**进群**,邀请您进高手如云技术交流群。

![img](http://pbe9kvqil.bkt.clouddn.com/FmsDX2j5rcQ7DjY8p-KYTN7m5uNu)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值