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

    语法

    find [选项] [path...]

    选项

    选项含义
    -help或--help 在线帮助
    -name <pattern> 用shell模式 <pattern>匹配文件名。 
    <pattern>可以用引号括起来,也可以不用,但是最好是用引号括起来。
    -iname <pattern> 效果与-name类似,但忽略字符大小写
    -ls 列出文件或目录名称列表到标准输出
    -exec command ; 执行指令,详细用法请看下文的-exec command ; 用法说明
    -type <c> 只寻找符合指定的文件类型的文件, c这里是一个字符
    -prune 如果文件是一个目录,就不会进入此目录
    -regex <pattern> 用正则表达式匹配文件名,这只是匹配文件的全路径,不是文件内容。
    -regextype <type> 更改在命令行中稍后出现的-regex和-iregex测试所理解的正则表达式语法。
    当前实现的<type>是emacs(这是默认的),posix - awk,posix - basic,posix - UNK p和posix - extended。
    -print 将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有"./"字符串

    示例

    列出当前目录及子目录下所有文件和文件夹

    find .

    在当前目录下查找.java文件

    find . -name "*.java"

    当前目录及子目录下查找所有.java和.cpp文件

    find . -name "*.java" -o -name "*.cpp" 
    find . ( -name "*.java" -o -name "*.cpp" )

    或者使用正则表达式

    find . | egrep ".*(.java|.cpp)$" 
    find . -regextype "posix-egrep" -regex ".*(.java|.cpp)$"

    找出当前目录下不是以.cpp结尾的文件

    find . ! -name "*.cpp"

    根据文件类型搜索

    find . -type <类型参数>

    类型参数含义
    f 普通文件
    l 符号链接
    d 目录
    c 字符设备
    b 块设备
    s 套接字
    p 管道FIFO

    删除匹配文件

    find . -type f -name "*.class" -delete

    查找当前目录下所有的.java文件,但是跳过子目录chapter02

    find . -path "./src/com/fireway/util" -prune -o -name "*.java" -print

    -exec command ; 的用法说明

    -exec选项后面跟随着所要执行的命令或脚本,然后是一对大括号{},一个空格,一个反斜杠加上一个分号。因为分号;在bash的环境下是有特殊意义的,因此利用反斜线来跳脱。 
    centos7_find_exec

    {}花括号代表前面find查找出来的文件名 
    示例,显示

    find . -exec ls -l {} ;

    示例,删除

    find . -exec rm -rf {} ;

    示例,把当前所有的Android.mk文件重命名为Android.mk_bak

    find . -name "Android.mk" -exec mv {} {}_bak ;

    但是有一点不好的是只能在后面加个后缀。 
    示例,如果遇到想把后缀.class修改成.clazz,可以考虑写一个shell脚本。

    for file in $(find . -name "*.class" -type f); do mv ${file} ${file/.class/.clazz}; done
    

    具体的shell变量怎么替换的可以参考《shell变量详解》来搞定,这里就不再细写了。

    find结合xargs使用

    注意xargs这里是一个单独的命令,不是find里面的一个选项。

    参考资料

  • 相关阅读:
    HDU 6071
    HDU 6073
    HDU 2124 Repair the Wall(贪心)
    HDU 2037 今年暑假不AC(贪心)
    HDU 1257 最少拦截系统(贪心)
    HDU 1789 Doing Homework again(贪心)
    HDU 1009 FatMouse' Trade(贪心)
    HDU 2216 Game III(BFS)
    HDU 1509 Windows Message Queue(队列)
    HDU 1081 To The Max(动态规划)
  • 原文地址:https://www.cnblogs.com/fireway/p/7261299.html
Copyright © 2011-2022 走看看