find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了。

exec解释:

  -exec  参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。{}   花括号代表前面find查找出来的文件名。

  使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的。在有些操作系统中只允许-exec选项执行诸如l s或ls -l这样的命令。大多数用户使用这一选项是为了查找旧文件并删除它们。建议在真正执行rm命令删除文件之前,最好先用ls命令看一下,确认它们是所要删除的文件。 exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个\,最后是一个分号。为了使用exec选项,必须要同时使用print选项。如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。

实例1:ls -l命令放在find命令的-exec选项中 

命令:

find . -type f -exec ls -l {} \;

输出:

[root@localhost test]# find . -type f -exec ls -l {} \; 

-rw-r--r--  root root  - : ./log2014.log

-rw-r--r--  root root  - : ./test4/log3-.log

-rw-r--r--  root root  - : ./test4/log3-.log

-rw-r--r--  root root  - : ./test4/log3-.log

-rw-r--r--  root root  - : ./log2013.log

-rw-r--r--  root root  - : ./log2012.log

-rw-r--r--  root root  - : ./log.log

-rw-r--r--  root root  - : ./log.txt

-rw-r--r--  root root  - : ./test3/log3-.log

-rw-r--r--  root root  - : ./test3/log3-.log

-rw-r--r--  root root  - : ./test3/log3-.log

[root@localhost test]#

说明: 

  上面的例子中,find命令匹配到了当前目录下的所有普通文件,并在-exec选项中使用ls -l命令将它们列出。

实例2:在目录中查找更改时间在n日以前的文件并删除它们

命令:

find . -type f -mtime +14 -exec rm {} \;

输出:

[root@localhost test]# ll

总计 

-rw-r--r--  root root  - : log2012.log

-rw-r--r--  root root      - : log2013.log

-rw-r--r--  root root     - : log2014.log

lrwxrwxrwx  root root       - : log_link.log -> log.log

-rw-r--r--  root root      - : log.log

-rw-r--r--  root root      - : log.txt

drwxr-xr-x  root root    - : scf

drwxrwxrwx  root root    - : test3

drwxrwxrwx  root root    - : test4

[root@localhost test]#  -exec rm {} \;

[root@localhost test]# ll

总计 

-rw-r--r--  root root  - : log2012.log

lrwxrwxrwx  root root       - : log_link.log -> log.log

drwxr-xr-x  root root    - : scf

drwxrwxrwx  root root    - : test3

drwxrwxrwx  root root    - : test4

[root@localhost test]# 

说明:

  在shell中用任何方式删除文件之前,应当先查看相应的文件,一定要小心!当使用诸如mv或rm命令时,可以使用-exec选项的安全模式。它将在对每个匹配到的文件进行操作之前提示你。

实例3:在目录中查找更改时间在n日以前的文件并删除它们,在删除之前先给出提示

命令:

find . -name "*.log" -mtime +5 -ok rm {} \;

输出:

[root@localhost test]# ll

总计 

-rw-r--r--  root root  - : log2012.log

lrwxrwxrwx  root root       - : log_link.log -> log.log

drwxr-xr-x  root root    - : scf

drwxrwxrwx  root root    - : test3

drwxrwxrwx  root root    - : test4

[root@localhost test]#  -ok rm {} \;

< rm ... ./log_link.log > ? y

< rm ... ./log2012.log > ? n

[root@localhost test]# ll

总计 

-rw-r--r--  root root  - : log2012.log

drwxr-xr-x  root root    - : scf

drwxrwxrwx  root root    - : test3

drwxrwxrwx  root root    - : test4

[root@localhost test]#

说明:

  在上面的例子中, find命令在当前目录中查找所有文件名以.log结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。 按y键删除文件,按n键不删除。

实例4:-exec中使用grep命令

命令:

find /etc -name "passwd*" -exec grep "root" {} \;

输出:

[root@localhost test]# find /etc -name "passwd*" -exec grep "root" {} \;

root:x:::root:/root:/bin/bash

root:x:::root:/root:/bin/bash

[root@localhost test]#

说明:

  任何形式的命令都可以在-exec选项中使用。  在上面的例子中我们使用grep命令。find命令首先匹配所有文件名为“ passwd*”的文件,例如passwd、passwd.old、passwd.bak,然后执行grep命令看看在这些文件中是否存在一个root用户。

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

命令:

find . -name "*.log" -exec mv {} .. \;

输出:

[root@localhost test]# ll

总计 12drwxr-xr-x  root root  - : scf

drwxrwxr-x  root root  - : test3

drwxrwxr-x  root root  - : test4

[root@localhost test]# cd test3/

[root@localhost test3]# ll

总计 

-rw-r--r--  root root  - : log2012.log

-rw-r--r--  root root      - : log2013.log

-rw-r--r--  root root       - : log2014.log

[root@localhost test3]# find . -name "*.log" -exec mv {} .. \;

[root@localhost test3]# ll

总计 [root@localhost test3]# cd ..

[root@localhost test]# ll

总计 

-rw-r--r--  root root  - : log2012.log

-rw-r--r--  root root      - : log2013.log

-rw-r--r--  root root       - : log2014.log

drwxr-xr-x  root root    - : scf

drwxrwxr-x  root root    - : test3

drwxrwxr-x  root root    - : test4

[root@localhost test]#

实例6:用exec选项执行cp命令  

命令:

find . -name "*.log" -exec cp {} test3 \;

输出:

[root@localhost test3]# ll

总计 [root@localhost test3]# cd ..

[root@localhost test]# ll

总计 

-rw-r--r--  root root  - : log2012.log

-rw-r--r--  root root      - : log2013.log

-rw-r--r--  root root       - : log2014.log

drwxr-xr-x  root root    - : scf

drwxrwxr-x  root root    - : test3

drwxrwxr-x  root root    - : test4

[root@localhost test]# find . -name "*.log" -exec cp {} test3 \;

cp: “./test3/log2014.log” 及 “test3/log2014.log” 为同一文件

cp: “./test3/log2013.log” 及 “test3/log2013.log” 为同一文件

cp: “./test3/log2012.log” 及 “test3/log2012.log” 为同一文件

[root@localhost test]# cd test3

[root@localhost test3]# ll

总计 

-rw-r--r--  root root  - : log2012.log

-rw-r--r--  root root      - : log2013.log

-rw-r--r--  root root       - : log2014.log

[root@localhost test3]#

linux常用命令:find 命令之 exec的更多相关文章

  1. ## 本篇文章对linux常用的一些命令做一下总结,如有需要补充以及不懂得地方,请在下方留言 适合于linux初学者,以及对命令掌握不牢的用来备忘

    本篇文章对linux常用的一些命令做一下总结,如有需要补充以及不懂得地方,请在下方留言 适合于linux初学者,以及对命令掌握不牢的用来备忘一,磁盘管理1.显示当前目录位置 pwd2.切换目录 cd ...

  2. Linux 常用的压缩命令有 gzip 和 zip

    Linux 常用的压缩命令有 gzip 和 zip,两种压缩包的结尾不同:zip 压缩的后文件是 *.zip ,而 gzip 压缩后的文件 *.gz 相应的解压缩命令则是 gunzip 和 unzip ...

  3. Linux常用的基础命令总结

    man 查看英文命令帮助   可以看作--help 拷贝目录的命令cp -a  包含所有 ls -a 显示所有文件包括隐藏文件  -ld ls -F 过滤目录文件(给不同类型文件结尾加上不同的符号) ...

  4. linux常用60条命令 转

    Linux必学的60个命令   Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在Linux系统上工作离不开使用系统提供的命 ...

  5. 入门学习Linux常用必会命令实例详解

    Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在Linux系统上工作离不开使用系统提供的命令.要想真正理解Linux系统, ...

  6. LINUX常用配置及命令

    一.   Fedora系统配置 1.      [设置网卡IP] 步骤如下: 1)     用root用户登陆,打开/etc/sysconfig/network-scripts/ifcfg-eth0文 ...

  7. Java线上问题排查思路及Linux常用问题分析命令学习

    前言 之前线上有过一两次OOM的问题,但是每次定位问题都有点手足无措的感觉,刚好利用星期天,以测试环境为模版来学习一下Linux常用的几个排查问题的命令. 也可以帮助自己在以后的工作中快速的排查线上问 ...

  8. 网络编程学习笔记-linux常用的网络命令

    网络参数设置命令 所有时刻如果你想要做好自己的网络参数设置,包括IP参数.路由参数和无线网络等,就得要了解下面这些相关的命令才行.其中Route及ip这两条命令是比较重要的.当然,比较早期的用法,我们 ...

  9. linux常用20条命令

    1.cd命令 这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径.如: cd /root/Docements # 切换到 ...

  10. linux常用配置文件和命令总结

    常用配置文件说明: 1..设置-n永远生效:Vim的配置文件:命令模式想永久生效, ~/.vimrc,新建文件,在里面输入保存即可 2.设置别名永远生效:在~/.bashrc  修改当前用户家目录里的 ...

随机推荐

  1. 利用n和nvm管理Node的版本

    写在前面 Node版本的迭代速度很快,版本很多(横跨0.6到0.11),升级Node版本成为了一个问题.目前有n和nvm这两个工具可以对Node进行无痛升级,本文简单介绍一下二者的使用. n n是No ...

  2. 冒泡排序算法的 python 实现与 C 的比较

    昨天用c写了简单的冒泡排序算法之后,正好最近在学 python,也想试试用python实现一下. 总体感觉,对于这种简答的小程序,python 确实充分体现了他简洁,易懂的特点.写起来特别流畅,舒服. ...

  3. mysql多列索引优化

    “把Where条件里面的列都建上索引”,这种说法其实是非常错误的! 这样一个查询,假设actor_id与film_id都单独建立索引 SELECT film_id , actor_id FROM sa ...

  4. JPA的锁机制

    JPA 各种实体锁模式的区别 字数2084 阅读304 评论0 喜欢4 为了能够同步访问实体,JPA提供了2种锁机制.这两种机制都可以避免两个事务中的其中一个,在不知情的情况下覆盖另一个事务的数据. ...

  5. 2.1TF模型持久化

    目前tf只能保存模型中的variable变量,整个模型还不能保存,版本1.x 保存模型代码 import tensorflow as tf import numpy as np # Save to f ...

  6. 自定义maven插件

    之前虽然一直知道maven插件是可以自定义的,不过一致没有用过.最近接触到了swagger项目中的codegen自动生成代码的功能,并且在codegen源码中,也是存在maven插件功能的,所以自己就 ...

  7. ArcGIS URL 组成

    转自帮助文档:http://server.arcgis.com/zh-cn/server/latest/administer/windows/components-of-arcgis-urls.htm ...

  8. es fielddata理解

    在es中,text类型的字段使用一种叫做fielddata的查询时内存数据结构.当字段被排序,聚合或者通过脚本访问时这种数据结构会被创建.它是通过从磁盘读取每个段的整个反向索引来构建的,然后存存储在j ...

  9. windows kibana的连接使用

    下载后解压使用,打开config目录下的kibana.yml文件,然后添加:elasticsearch.url: "http://localhost:9200"  表示你要添加的e ...

  10. 洛谷P4035 球形空间产生器 [JSOI2008] 高斯消元

    正解:高斯消元 解题报告: 链接! 昂开始看到以为是,高斯消元板子题? 开始很容易想到的是,虽然是多维但是可以类比二维三维列出式子嘛 但是高斯消元是只能处理一元问题的啊,,,辣怎么处理呢 对的这就是这 ...