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. Gradle gitignore Gradle 模式 上传SVN 要忽略的文件

    .gradle /local.properties /.idea/workspace.xml /.idea/libraries .DS_Store /build /captures /.idea *. ...

  2. iOS - 获取音视频文件的Metadata信息

    // // MusicInfoArray.h // LocationMusic // // Created by Wengrp on 2017/6/22. // Copyright © 2017年 W ...

  3. http get请求参数拼接

    localhost:8080/hbinterface/orderInterface/groupReverseAccept.do?bizType=4&&bnetAccount=ESBTE ...

  4. spring面试大全

    一.spring如何实现资源管理? 使用 applicationContext.getResource(“classpath:文件名”):在src根目录下,在类路径下 applicationConte ...

  5. C3P0连接池配置(C3P0Utils.java)

    配置文件 c3p0-config.xml <?xml version="1.0" encoding="UTF-8"?> <c3p0-confi ...

  6. iOS SwiftMonkey 随机暴力测试

    参考源文章 https://github.com/zalando/SwiftMonkey https://kemchenj.github.io/2017/03/16/2017-03-16/ 简介 这个 ...

  7. 获取验证码随机字符串@return string $captcha,随机验证码文字

    <?php//验证码工具类class Captcha{//属性private $width;private $height;private $fontsize;private $pixes;pr ...

  8. slam学习资源

    从零开始学slam: http://blog.csdn.net/akunainiannian/article/details/45363731 史上最全的SLAM学习资料收集  http://www. ...

  9. 让WIN7桌面显示IE图标

    首先新一个文本文件,将以下代码复制到新建文档中.然后保存为IE.reg,右键以管理员权限运行.此时,注册表注册成功.LOOK,IE图标出来了 Windows Registry Editor Versi ...

  10. 10个实用的Django建议(转)

    前言:随着Django1.4第二个候选版的发布,虽然还不支持Python3,但Django团队已经在着手计划中,据官方博客所说, Django1.5将会试验性的支持python3.Django 作为一 ...