问题标签 [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 回答
1128 浏览

java - 如何将正则表达式转换为 extglob 表达式?

我想将正则表达式转换为 glob

我在看jakarta oro但我找不到适合我需要的方法。它编译正则表达式并返回其 glob 等价物

它们都是Type-3语法,所以理论上应该是可能的。

不幸的是,我受到使用 JDK5 的限制。

0 投票
1 回答
121 浏览

unix - 用于移动特定目录中的所有文件和目录的 UNIX 命令,除了一个单独的文件

我想将除特定文件之外的所有文件从单个目录移动到 mac 上的垃圾箱。

我不想移动该目录中的文件和文件夹,而是希望将所有文件和文件夹单独移动到垃圾箱。对于这个目录:

~/Desktop/script.sh

~/Desktop/File1

~/Desktop/Folder/File2

我希望 script.sh 留在桌面上,但垃圾目录中包含三个元素,如下所示:

~/.Trash/File1

~/.Trash/Folder

~/.Trash/File2

我发现extglob并且为了我的任务的目的,我将在我的脚本中启用和禁用它。我正在使用find,因为我想移动目录中的所有目录和文件和文件,当放入垃圾箱时,我希望所有文件和目录都是独立的。正如我希望目录中的文件位于该目录之外。

这是我创建的代码,我没有收到任何错误。

我的问题是find我用于此任务的正确命令,如果是这样,我哪里出错了,因为我能够成功完成我的任务,而不是单独排序文件,而不是在垃圾箱中的父目录中。

0 投票
2 回答
1770 浏览

bash - 双星号通配符是否意味着除了 `globstar` 之外的任何东西?

我有一个 Antbuild.xml脚本,其中包含以下代码段:

根据这个问题的答案和Bash 文档,双星号表示globstar模式匹配:

globstar

如果设置,文件名扩展上下文中使用的模式 '**' 将匹配所有文件以及零个或多个目录和子目录。如果模式后跟“/”,则只有目录和子目录匹配。

这似乎是编写代码的人意味着它可以工作的意义:.jar在项目库目录中找到所有文件,无论有多少目录深。

但是,代码通常在globstar关闭设置的 Bash shell 中执行。在这种情况下,似乎应该将双星号解释为单个星号,这会破坏构建。尽管如此,构建执行得非常好。

是否有任何场景之外globstar的 Bash shell 会以**任何不同的方式解释*?例如,extglob仅设置是否可以区分两者?这方面的文档似乎很少。

0 投票
2 回答
72 浏览

bash - 删除所有内容,除了两个文件

我想删除文件夹中的所有内容,包括文件夹,但两个文件除外。为此,为什么要使用这个脚本:

哪个有效,但是当我尝试在一个案例中执行时:

这将发生:

我想知道为什么会这样,更重要的是,如何解决:)

0 投票
1 回答
364 浏览

bash - Makefile:如何获取通配符 (!arch)/*.c

我正在尝试制作一个用于编译项目中所有源文件的生成文件,这些文件分布在如下几个目录中:

我想从 arch 和包含目录中排除所有文件,我可以在 shell 中使用命令 ls !(arch)/*.c 执行此操作但是当我尝试使用

$(通配符!(arch)/*.c)

它不起作用。我怎样才能让它在我的makefile中工作?我可以使用 !(arch || include) 之类的东西来排除两个目录吗?

0 投票
1 回答
223 浏览

bash - 负匹配如何在 extglob 中进行参数扩展

问题

的行为

在参数扩展中使用时,它不像我期望的那样工作,特别是


输入


测试用例


眼镜


笔记

这些是非常基本的示例,因此如果可以在答案中包含更复杂的示例和解释,那么请这样做。

如果需要更多信息或示例,请在评论中告诉我。

已经看过extglob 如何与 shell 参数扩展一起工作?,甚至评论了该特定问题的问题所在,因此请不要将其标记为骗子。

0 投票
2 回答
156 浏览

bash - bash extglob 范围或值匹配相同的文件名两次

鉴于这些文件:

我期望这种 globbing 模式(启用 extglob 的 bash):

输出:

但相反,我fileFoo列出了两次:

“或”的两边都不会产生意想不到的结果:

那么为什么fileFoo在我“或”表达式时打印两次,以及匹配范围(例如上面的 1-2 但可能是 17-593 或任何其他范围)或其他一些不相关的字符串(例如上面的 Foo )?

0 投票
1 回答
194 浏览

ruby - Ruby 中的 Extglob 语法样式匹配

我想创建一个 glob 表达式来识别其中没有任何句号(句点)的文件名,并在 Ruby 代码中使用该表达式。我意识到普通的 glob 表达式不能做到这一点。但是,bash extglob 有一种可以处理这种情况的语法。是否可以在 Ruby 中使用 bash extglob 样式模式,使用核心 Ruby 库或第三方 gem?

我尝试使用File::FNM_EXTGLOB,但这没有用。下面是一个简化的场景,用来测试是否File::FNM_EXTGLOB有和 bash extglob 完全相同的语法,但似乎不是这样:

此外,英语日语文档File.fnmatch只谈论File::FNM_EXTGLOB允许您使用两种可能性的联合,例如File.fnmatch('c{at,ub}s', 'cats', File::FNM_EXTGLOB).

使用 glob 表达式的替代方法是使用正则表达式,或者可能使用操作系统自己进行 globbing,但如果可能的话,我宁愿不走这些路径。

0 投票
1 回答
48 浏览

bash - Extglob - 不按模式移动所有文件,但保留特定文件

假设我有一个名为/folder1/的文件夹,其中包含以下文件:

我想移动到/folder2/所有不是.log当前日期的文件,除了file.txt. 由于今天是2018-01-22(在我的时区),我只想保留log-2018-01-22.logfile.txtin /folder1

我正在使用的脚本(见下文)没有像我打算的那样保留file.txt在./folder1/.log/folder2/

我可以在该!($d.log)部分中进行任何更改以使命令忽略file.txt吗?

0 投票
1 回答
123 浏览

linux - Bash脚本复制文件夹和内容而没有一个文件

我正在尝试复制没有一个文件的目录内容。我遇到的问题是该文件是嵌套的几个文件夹,并且 extglob 运算符无法匹配。

假设以下文件夹结构:

在此处输入图像描述

我想从源中复制所有内容,包括子文件夹和文件到 dest,除了smu.txt。

我原以为以下方法可以解决问题:

但它仍然复制 smu.txt。

我也尝试了以下但没有成功:

如果 smu.txt 直接在../source它下面,它会成功忽略它,但是如何让它忽略子目录中的文件?