gpt4 book ai didi

linux - 如何在 *nix 上查找/grep 目录名称匹配 "x"但不匹配 "y"的所有路径?

转载 作者:IT王子 更新时间:2023-10-29 00:25:11 29 4
gpt4 key购买 nike

我有一个像这样的文件夹结构(这是一个小片段):

└── test
   └── cases
      └── model
         ├── client
         │ ├── socketsTest.coffee
         ├── server
         │   └── socketsTest.coffee
         └── shared
         └── findersTest.coffee

问题是,如何列出所有以 .coffee 结尾且不存在于 client 文件夹中的路径?

以下命令返回 server 文件夹中存在的所有匹配 .coffee 的文件:

find test -name "*Test.coffee" | egrep '/*server*/'

但我真正需要的是一个匹配所有内容的正则表达式除了客户端文件夹中的内容。

在 *nix 上最简洁的方法是什么?最终目标是返回不在 client 文件夹内的文件,因此对于上面的树来说:

$ <find files except those a client folder>
test/cases/model/server/socketsTest.coffee
test/cases/model/shared/findersTest.coffee

我试过做这样的事情但没有成功:

find test -name "*Test.coffee" | egrep '*model/[^client]*'

最佳答案

您可以使用 -prune 操作来忽略目录。 -o 的意思是“或”,因此可以理解为“如果它被命名为 client 则对其进行修剪,否则打印名为 *.coffee 的文件”。

find test -name client -prune -o -name '*.coffee' -print

或者您可以使用双重测试,它更容易阅读但效率稍低,因为它会递归到 client/ 目录,而第一个完全避免它们。

find test -name '*.coffee' ! -wholename '*/client/*'

关于linux - 如何在 *nix 上查找/grep 目录名称匹配 "x"但不匹配 "y"的所有路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12255722/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com