http://www.web008.net

find命令

当前目录及子目录下找出全数.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)$"

美高梅163888,列出当前目录及子目录下全数文件和文件夹

find .

选项

选项 含义
-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 将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有"./"字符串

参照他事他说加以考查资料

  • 有关 ‘--exec’ 参数( find 命令卡塔 尔(英语:State of Qatar)及介绍 ‘xargs ’命令分歧(新版卡塔尔国
  • find命令
  • find批量改名【转】
  • shell变量详细明白
  • linux find 命令中 如何使用正则表明式
  • xargs命令

语法

find [选项] [path...]

搜索当前目录下不是以.cpp结尾的文书

find . ! -name "*.cpp"

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

find . -name "*.java"

除去相称文件

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

示例

追寻当前目录下有所的.java文件,不过跳过子目录chapter02

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

find结合xargs使用

在乎xargs这里是一个独门的指令,不是find里面包车型地铁一个采撷。

基于文件类型搜索

find . -type <类型参数>

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

-exec command ; 的用法表明

-exec选取前边跟随着所要实施的指令或脚本,然后是意气风发对大括号{},二个空格,五个反斜杠丰硕一个分号。因为分号;在bash的景况下是有特有含义的,因而接纳反斜线来跳脱。 
美高梅163888 1

{}花括号表示前边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变量详细明白》来解决,这里就不再细写了。

郑重声明:本文版权归美高梅163888所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。