【问题标题】:Grep for a file with a specific name [duplicate]Grep 查找具有特定名称的文件 [重复]
【发布时间】:2018-01-10 11:05:13
【问题描述】:

在我的存储库中,我有几个文件,包括两个特定的 JAR 文件,如下所示:

  • backend-0.0.1-SNAPSHOT.jar
  • backend-0.0.1-SNAPSHOT.jar.original

我只需要获取第一个,并且只需要获取它的名称:“backend”。版本不是静态的;它可以改变。

所以我这样做了:

ls | grep 'backend'

但是这个让我两个都得到了,所以我需要 grep 查找以 backend 开头并以 .jar 结尾的文件。

我该如何使用它?

【问题讨论】:

  • 请阅读grep 的文档。此外,了解通配符和正则表达式。
  • @ForceBru:最好在 Stack Overflow 上指出重复项(这样这个问题就可以结束了)

标签: linux bash shell grep


【解决方案1】:

Don't use the output of ls for scripting。请改用find

find . -maxdepth 1 -type f -name 'backend*.jar'

【讨论】:

    【解决方案2】:

    或者,不使用grep

    ls backend*.jar
    

    【讨论】:

      【解决方案3】:
      ls | grep '^backend.*.jar$'
      

      $ 表示jarr 后面没有符号。

      【讨论】:

      • 应该是.*。此外,...文件以 backend... 开头,因此您可能需要添加 ^.
      • 猜猜如果你的目录中有一个名为^backend.foo.jar$的文件会发生什么。您真的不希望发生路径名扩展 => 在正则表达式周围使用单引号。
      猜你喜欢
      • 2019-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      • 2019-05-28
      相关资源
      最近更新 更多