问题标签 [extglob]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
48 浏览

bash - Bash 扩展了 globbing 错误?

一个目录下有三个文件:

当我执行时:

它显示:

而不是ab2ab3仅。

任何想法为什么会这样?它是一个错误吗?

0 投票
3 回答
1468 浏览

linux - 模式匹配在 bash 脚本中不起作用

使用模式匹配!("file1")在 bash 脚本中不起作用,但可以在命令行中使用。

例如:

这将列出目录中除file1和之外的所有文件file2

在脚本中执行该行时,将显示此错误:

不管用什么rm -v !("file1")。发生同样的错误。这里发生了什么为什么这在脚本中不起作用?

0 投票
0 回答
69 浏览

bash - bash 脚本不像 shell

这是我的脚本:

aabcaa在我期望的时候输出bcaa

当我在 bash shell 上尝试相同的命令时(bash从 zsh shell 获取命令),一切都按我的意愿工作。bash --version我用和检查了版本/bin/bash --version。显然,这两个命令输出相同的东西。脚本的意外行为在 zsh shell 和 bash shell 中是相同的。

有什么问题?

0 投票
1 回答
93 浏览

ftp - lftp remove 的负模式匹配

GitHub 操作中,我想在部署新包后从 FTP 服务器中删除旧包文件。为了实现这一点,我想

  1. 部署新包
  2. 解析 ( 等) 的main-\*.js哈希polyfills-\*.js
  3. 删除所有匹配的文件,除了具有新哈希的文件

对于 (3),我打算将 lftp 与mrm main-*.!(328276e83108ad3616fd).js. 然而,这似乎与 lftp 的预期模式不匹配。Shopts exglob 在父 shell 中被激活,但我担心这对 lftp 没有影响。

任何有关如何实现上述目标的提示都将受到高度赞赏。谢谢!

0 投票
1 回答
32 浏览

regex - 在 bash 如何将 extglobed 文件名放入数组中?

我知道我可以arr=(*.log)将所有 *.log 文件放入 arr。但是当我尝试使用更复杂模式的 extglob 时,它似乎失败了:

但是如果没有 extglob 模式+(match),它可以工作:

有什么建议吗?

0 投票
1 回答
56 浏览

bash - 模式在交互式 shell 中有效,但在脚本中无效

在我的交互式外壳中,我可以将模式存储在变量中

但是如果我创建一个 shell 脚本

我得到这个错误运行它

为什么放入脚本时会失败?

0 投票
1 回答
110 浏览

bash - 当包含在函数中时,bash extglob 模式匹配会中断

这有效

这会返回一个错误

我错过了什么,这将允许我在函数中使用它?

0 投票
1 回答
79 浏览

bash - bash 扩展 glob 中的否定不起作用

我正在尝试列出一些选择性文件但想排除 atop_20210428,但以下扩展 globatop_20210@(3|4)*[0-4]*!(8)*不排除文件 atop_20210428,那需要更正什么?

我确实已经打开了 extglob:

0 投票
0 回答
21 浏览

firebase - firebase glob 匹配根目录和所有目录

对于 google firebase 托管,我尝试在 firebase.json 中定义一个规则,该规则结合了匹配根页面的规则(例如https://stackoverflow.com/

和子页面(例如https://stackoverflow.com/tags

因为它们共享相同的配置。

我当前的配置看起来像这样,它可以工作但很难维护:

我想建立一个统一的规则并用这个来尝试

但该规则仅匹配子页面而不匹配根页面。

我在写这篇文章时发现的一个解决方案是

它与根页面和所有子页面匹配,而不是资产。我仍然想知道这是否可以使用 glob 以及使用正则表达式是否可以(因为谷歌建议使用 glob)。

0 投票
1 回答
65 浏览

linux - 如何删除除与多个目录中的模式匹配的文件之外的所有文件

假设我有一个 my_dirs/ 目录,insdie 那个目录我有几个并行的子目录,其中有几个文件,我想删除所有文件,除了那些有子字符串'.regions'的文件

这是我的父目录内容: 在此处输入图像描述

这是我尝试过的:

但我收到一条错误消息:无法删除 «!(./**/*.region *) »: 文件或目录不存在。

我怎样才能做到这一点?