【问题标题】:Find all files matching a given pattern AND excluding a given pattern?查找与给定模式匹配且不包括给定模式的所有文件?
【发布时间】:2014-02-28 15:08:42
【问题描述】:

我想在目录中查找与给定模式匹配的所有文件,比如 A,而不匹配给定模式,比如 B

我尝试过的: 执行“ls -I B”会给我所有与模式 B 匹配的文件。但我没有得到任何关于如何做我想做的事情的线索。

【问题讨论】:

  • ls -l B如何给你所有与B模式不匹配的文件?

标签: bash shell unix find systems-programming


【解决方案1】:

您可以使用find . -name "pattern",然后为您不想拥有的模式添加否定条件:

find . -name "pattern_A" ! -name "pattern_B"

示例

让我们查找名称中包含A 但不包含B 的文件:

$ ls -1
adfadAadsa
adfBasdA
Aksjdflksj
asdfBasdf
Badsf

$ find . -name "*A*" ! -name "*B*"
./Aksjdflksj
./adfadAadsa

【讨论】:

  • +1 -regexfind 选项对于允许复杂模式通常很有用。
  • 可以添加深度控制。不搜索子目录:find . -maxdepth 1 -name "pattern_A" ! -name "pattern_B"
猜你喜欢
  • 2017-10-27
  • 2012-05-28
  • 1970-01-01
  • 2016-02-09
  • 1970-01-01
  • 1970-01-01
  • 2017-07-26
  • 2012-02-29
  • 2016-11-28
相关资源
最近更新 更多