zoukankan      html  css  js  c++  java
  • find命令小结

    find命令小结

    find命令用于在系统中查找文件,配合 -exec 选项或 xargs命令还能对查找到得文件执行一些列的自动化操作。

    基本格式:find [-H] [-L] [-P] [path...] [expression]

    path指定起始搜索路径,可以指定多个,exprssion表示搜索表达式,包含选项及选项参数。

    [TOC]

    表达式

    -depth n (mac os) : 指定只遍历深度为 n 的目录(相对起始目录),例如 1 表示只在当前目录搜索,2 表示只在当前目录的子目录中搜索,以此类推。

    -maxdepth n : 指定最大遍历深度为 n。

    -maxdepth n : 指定最小遍历深度为 n。

    -name pattern : 搜索文件名匹配 pattern 的文件,例如 '*.txt' 匹配所有以 '.txt' 结尾的文件。

    -path pattern : 搜索路径名匹配 pattern 的文件。

    -type t : 搜索文件类型为 t 的文件。t 的可选值为:

        b  block special(块设备文件)
        c  character special(字符设备文件)
        d  directory(目录)
        f  regular file(普通文件)
        l  symbolic link(符号链接)
        p  FIFO(管道)
        s  socket(套接字)
    

    -ls : 输出结果包括权限,大小,路径,创建者,创建时间等信息,类似命令 ls -dgils的输出结果。

    i 前缀 : 有很多带 i 前缀的选项,表示忽略大小写。例如 -iname-ilname, -ipath, -iregex, -inum等。

    -exec command [argument ...] ; : 执行命令 command,执行的上下文路径为搜索起始路径,这个表达式必须已分号结束。command可以带多个参数,如果命令名字或者参数名字出现 '{}' ,'{}'将会被当前文件的路径代替。需要注意的是在shell中执行此命令的时候,需要转义分号,可以用引号引号引起来或者在分号前面加 “”号。

    -execdir command [argument ...] ; : 同 -exec,区别是执行命令的上下文路径是当前文件所在的路径。

    关于输出

    输出的文件路径格式跟指定的起始路径格式相关,如果起始路径的格式是相对路径,输出的结果就是相对路径,如果起始路径是绝对路径,输出的结果也是绝对路径。

    $ pwd
    /tmp
    $ find . -name '*.txt'
    ./1.txt
    ./2.txt
    ./3.txt
    $ find /tmp -name '*.txt'
    /tmp/1.txt
    /tmp/2.txt
    /tmp/3.txt
    

    基本用法举例

    使用 '-exec' 执行自动化操作

    • 把找出的文件拷贝到另外一个目录

      # 先创建几个文件和目录
      $ touch 1.txt 2.txt 3.txt
      $ mkdir xxx
      
      $ find . -maxdepth 1 -name '*.txt' -exec cp {} xxx ;
      $ ls xxx
      1.txt   2.txt   3.txt
      
      # 这个更有趣,只要出现{}的地方都被当前文件的路径替换掉
      $ find . -maxdepth 1 -name '*.txt' -exec cp {} xxx/{}.bak ;
      $ ls xxx
      1.txt       1.txt.bak   2.txt       2.txt.bak   3.txt       3.txt.bak
      
      # 创建目录也可以这样
      $ rm -rf xxx
      $ makdir xxx && find . -maxdepth 1 -name '*.txt' -exec cp {} xxx ;
      $ ls xxx
      1.txt   2.txt   3.txt
      

    注意的是,当把文件拷贝到 xxx 目录后,find 继续找 xxx目录下的 .txt 文件,然后执行拷贝,相当于:

    $ cp xxx/1.txt xxx/1.txt
    

    因为是同一个文件,所以会打印出警告信息,这里用 “-maxdepth 1” 指定只在起始目录查找,从而避免在 xxx 目录中查找。

  • 相关阅读:
    rzc generate exited with code -2147450730.
    c#WebService动态调用
    c#BarTender打印,打印微调
    记一次ios下h5页面图片显示问题
    FID
    RSA密钥对生成,并解析公钥指数和模数
    angularjs-6
    angularjs-5
    angularjs-4
    angularjs-4
  • 原文地址:https://www.cnblogs.com/skeeter/p/3719937.html
Copyright © 2011-2022 走看看