• 【shell】find与xargs,exec结合用法详解


    DATE: 2018.12.15


    1、参考

    https://blog.csdn.net/u011579204/article/details/46709929
    https://blog.csdn.net/taiyang1987912/article/details/41488395
    https://czmmiao.iteye.com/blog/1949225
    https://blog.csdn.net/csyuanA/article/details/76408836
    https://download.csdn.net/download/soaringlee_fighting/10854302

    2、find命令详解
    2.1 find命令的一般形式
    find pathname -options [-print -exec -ok]
    

    参数说明:

    pathname:find命令查找的目录路径,例如.表示当前目录,/表示系统根目录,~表示$HOME目录。
    -print : find命令将匹配的文件输出到标准输出stdout.
    -exec :find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为command{} ;,注意{}和;之间的空格。
    -ok和-exec的作用相同,只不过是以一种更加安全的模式来执行该参数给出的shell命令,在执行每一个参数之前,都会给出提示,让用户来确定是否执行。

    2.2 find主要命令选项
    选项 作用
    -name 按照文件名查找文件
    -perm 按照文件权限来查找文件
    -user 按照文件属主来查找文件
    -size n[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计
    -mtime -n /+n 按照文件的更改时间来查找文件
    -type 查找某一类型的文件,例如d:目录 f:普通文件 p:管道文件
    -depth 在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找
    -follow 如果find命令遇到符号链接文件,就跟踪到 链接所指向的文件
    2.3 find用法示例

    1、使用-name选项查找当前目录及子目录中所有txt文件

    $ find ./ -name ".txt" -print
    

    2、查找系统根目录下更新时间在5日以内的文件

    $ find / -mtime -5 -print
    

    3、使用-exec或-ok来执行shell命令
    查找当前目录中所有普通文件并删除“”

    $ find ./ -f  -exec rm {} ;
    $ find ./ -f  -ok rm {} ;
    
    3、xargs
    3.1 由来

    在使用find命令的-exec选项处理匹配到的文件时,find命令将所有匹配到的文件一起传递给exec执行。不幸的是,有些系统对能够传递给exec的命令长度有限制,这样find命令运行几分钟后,就会出现溢出错误 。这就有了xargs的用武之地。

    3.2 find与xargs配合使用的巧妙

    1、查找当前目录下所有txt文件并删除

    $ find ./ -name "*.txt" | xargs rm
    

    2、在整个系统中查找内存转储文件并把结果保存到/tmp/core.log中

    $ find . -name "core" -print | xargs  echo "" >/tmp/core.log
    

    3、用grep命令在所有普通文件中搜索device这个词

    $ find / -type f -print | xargs grep "device"
    
    4、小结

    find命令是一个非常优秀的工具,它可以按照用户指定的准则 来匹配文件。使用exec和xargs选项可以使用户对所匹配到的文件执行几乎所有的命令。


    THE END!

  • 相关阅读:
    PHP实现大文件下载
    使用CSS样式的三种方式
    PHP工厂模式
    使用 curl 命令发送请求
    vim 基本操作
    MAC OS 各个文件夹详细介绍以及 node 安装位置
    linux find 命令
    Mac 关闭某端口程序
    glob 模式的 Linux Shell 通配符介绍
    Mac tree 输出文件树形式
  • 原文地址:https://www.cnblogs.com/SoaringLee/p/10532199.html
Copyright © 2020-2023  润新知