zoukankan      html  css  js  c++  java
  • find与xargs

    1 find命令格式与基本参数
    find命令基本格式为: find pathname -options [-print -exec -ok]
    具体参数如下:
    pathname:查找路径
    -name:按照文档名称查找
    -perm:按照文档权限查找
    -prune:不在当前指定的路径查找。假如同时指定了-depth选项,则prune被忽略
    -user:按照文档属主查找
    -group:按照文档属组查找
    -mtime -n +n:按照文档更改时间查找。-n 指距离现在时间n天以内;+n n天以外
    -nogroup:查找无效属组文档
    -nouser:查找无效属主文档
    -newer file1 !file2:查找更改时间比file1新比file2旧的文档
    -type:查找某一类型文档
    b:块设备文档
    d:目录
    c:字符设备文档
    P:管道文档
    l:符号链接文档
    f:普通文档
    -size n[c]查找文档长度为n块的文档 有[c]表示文档长度以字节计
    -depth:查找时,首先查找当前目录文档,然后再在其子目录查找
    -fstype:查找位于某一类型文档系统中的文档,文档系统类型可在/etc/fstab中找到
    -mount:查找文档不跨越文档系统mount点
    -follow:如碰到链接文档,则跟踪至链接所指向文档
    -cpio:对匹配的文档使用cpio命令,将文档备份到磁带设备中
    -print:将匹配的文档输出到标准输出
    -exec:对匹配的文档执行所给的shell命令。形式为:command { } \;注意{ }和\;之间的空格
    -ok:和-exec作用相同。只但是以一种更安全的模式执行该参数所给的shell命令。在执行每个命令之前,都会给出提示,让用户确定是否执行
    以上命令参数不必要都掌握,只需掌握比较实用的,其他的用到时再查询也比较方便。
    2 find命令实用场景举例
    find / -name "[a-z]*" // 在根目录及其子目录下查找文件名以小写字母开头的文件,注意此处并不是正则表达式。
    find ./ -user barry // 在当前目录下查找文件属主是barry的文件
    find /barry -type d // 在barry目录下查找类型是目录的文件
    find /barry -mtime +5 // 在barry目录下查找文件最后更新时间在5天以前的文件
    find /barry -ctime -3 // 查找最后更新时间在3天以内的文件,注意此处是文件属性的更新时间,不是文件内容
    find /barry -size +5k //查找文件大小在5k以上的文件
    以上查找条件可以同时使用,用来查找同时满足多个条件的文件。
    find ./ -type f -exec rm {} \; // 对于查找到的符合条件的文件执行rm命令,注意{}与\之间的空格
    但是这样会有个问题,当查找到的文件非常多时,对每一个文件都执行rm命令,产生多个进程,资源消耗比较厉害。所以xargs就显得很聪明了,它并不产生多个进程。
    3 xargs命令
    xargs命令接收一块数据,这块数据是张参数列表,按照指定的分隔符,每个分段是一个参数。例如:
    find ./ -type f | xargs rm
    这样就对找到的每个文件执行rm命令,类似-exec的功能。
    不过,问题来了,当find找到的文件的路径中有空格时,xargs会把这个路径分成两段,每一段作为一个参数,可见默认xargs是以空格问分割依据的。
    如果让xargs和find命令以别的一个特殊的字符作为分隔符,这个问题不就解决了,这样xargs就不会误会find了。
    find命令可以用 -print0选项将find命令的输出以空字符'0'作为分隔符,也就是说路径之间是以空字符作为分隔符的。
    同理,xargs命令用 -0 来指定以空字符作为分隔符,从传递进来的数据中提取参数。如下:
    find ./ -type f -print0 | xargs -0 rm
    这样就和谐了。

  • 相关阅读:
    枚举与常量需要注意的一个问题
    parted分区用法
    Linux下常用服务的端口号
    NFS服务
    mount用法
    Rsync服务部署
    常见的RAID级别
    SQL注入语句 (很全)
    数据库被注入daxia123或cn.jxmmtv.com原因及解决办法
    StringTemplate.net模板技术用法
  • 原文地址:https://www.cnblogs.com/barrychiao/p/2718777.html
Copyright © 2011-2022 走看看