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里面的一个选项。

    参考资料

  • 相关阅读:
    正则表达式在线测试(生成)工具
    org.eclipse.swt.custom.StyledText.getScrollbarsMode()I
    MySQL修改表一次添加多个列(字段)和索引
    How can I view currently running MySQL queries?( 查看正在运行的MySQL语句/脚本命令)
    faster alter table add column
    提取data.frame中的部分数据(不含列标题和行标题)
    How to generate a random number in R
    INSTALLMENT of QValue
    Linux 执行ll命令时指定按文件时间或大小排序
    替换 data.frame 中的特殊的值
  • 原文地址:https://www.cnblogs.com/fireway/p/7261299.html
Copyright © 2011-2022 走看看