如果我有以下文件

aaa-a1
aaa-a2
c
d
eee-e1

那么,是否可以编写一个ls的正则表达式,列出除aaa*eee*之外的所有文件?

如果它是JavaScript,我会写下

^/(?!aaa|eee)([a-z0-9]+)$ 

但在Bash中,ls ^/(?!aaa|eee)([a-z0-9]+)$不是有效的正则表达式.

推荐答案

您可以在bash中使用扩展GLOB模式来实现这一点,如下所示:

shopt -s extglob
ls !(@(aaa|eee)-*)

c      d

这里:

  • shopt -s extglob启用扩展全局
  • !是否定的
  • @(...|...) Select 其中一个备选方案

Linux相关问答推荐

如何在 if ... elif struct 中判断 bash 命令的退出状态?

Bash:将带有新行的字符串转换为带有逗号、内联的唯一值的字符串

在正在运行的进程的输出周围添加自定义字符串

将(覆盖)文件移动到不同位置的同名文件夹中

如何使用 sed 和 date 命令替换和格式化字符串中的日期?

我可以阅读 Linux 内核的哪些部分以获得乐趣?

如何使用 AWK 合并两个文件?

用于将文件夹从本地计算机复制到远程服务器的 scp 命令语法

当命令太长时,命令行会自动覆盖

如何告诉 valgrind 对Forking 进程进行 memcheck?

将 AWK 结果分配给变量

如何设置errno值?

是否有一个 linux 命令来确定与给定进程 ID 关联的窗口 ID?

如何在 Linux 上传递带感叹号的参数?

试运行 cron 条目

GNU Octave 方法对矩阵中的每个项目进行操作.octave arrayfun(...)示例

解压tar tar.bz2 文件报错

限制程序在 Linux 中运行的时间

如何在 IE 中使用 Linux 进行测试

将 BlueZ Stack 用作外设(广告商)