【问题标题】:Search inside Java Files Linux in a pattern在 Java Files Linux 中搜索模式
【发布时间】:2018-02-01 14:36:02
【问题描述】:

我是 Linux 搜索的新手。但是需要编写脚本或命令来搜索文件夹中所有遵循特定模式的java文件(可以有其他目录)。

public class ${key} extends ${key}

其中变量${key} 是文件名。

一些例子:
让文件名是 Foo.java。 搜索模式:public class Foo extends foo。 其他变体:public class Foo extends com.example.foo.

此脚本需要稍后进行调整以执行其他 Java 文件内容搜索。

编辑:
我还需要获取${key},即我需要存储不带扩展名或路径的文件名,然后将其插入命令中。像我们做的事情(在 c/java 中):"public class" + fname + " extends " + " fname "

输出可以是: ./src/com/foo/bar.java:public class foobar extends com.foo.foobar

【问题讨论】:

  • 可以通过 shell(grep, awk..) 来完成。但是,这并不安全。因为java语法允许类定义有换行符,cmets....为了快速和肮脏..好吧,grep有帮助。但如果你想让它用于长期使用或某些关键目的……你最好三思而后行。

标签: java linux shell grep find


【解决方案1】:

我建议看看使用 find 命令并将其传递给 grep 命令。

find /directory -iname *.java | grep -e "class ${key}"

你可以做类似的事情来找到扩展它的类。您可以查找 regex 以了解如何使其更灵活地处理换行符和其他空白字符。

【讨论】:

  • 应该是“find /dir -name *.java - exec grep searchPattern {} \;”
  • 我应该如何拿起 ${key} 这是最重要的部分。需要存储不带扩展名或路径的文件名,然后将其插入命令中。像我们做的事情(在 c/java 中):"public class" + fname + " extends " + " fname ".
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-23
  • 1970-01-01
  • 1970-01-01
  • 2012-09-25
  • 2013-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多