【问题标题】:How do I use the logical "or" with a Linux wildcard?如何将逻辑“或”与 Linux 通配符一起使用?
【发布时间】:2022-06-15 23:24:54
【问题描述】:

大家,

我目前正在尝试删除以“U”开头、以“.txt”或数字结尾的文件。到目前为止,我已经使用这个命令来查找这些文件:

 rm *[U-.txt||0-9]* 

但是,该命令显示没有与该描述匹配的文件。

ls: cannot access '*[U-.txt': No such file or directory

0-9]:找不到命令。

显然,终端 zsh 正在寻找以 U 开头的特定文件,然后查看“U”后面的所有其他字符,并在 .pdf 结尾处停止。但是,当我将逻辑“或”放在该范围内时,我会收到一条错误消息。错误消息表明没有与该描述匹配的文件。有 6 个文件的数字以数字开头,但终端要么不理解我要做什么,要么说没有任何以“U”开头、以 .pdf 结尾并有号码。

【问题讨论】:

  • 我对 zsh 不太熟悉,但似乎 setopt kshglob 应该可以帮助您,因为它启用了 U*@(.txt|[0-9])
  • @choroba 正是我写的答案:)

标签: linux zsh


【解决方案1】:

zsh 中,即(带有KSH_GLOB 选项集)

rm U*@(.txt|[0-9])

模式

  • U开头
  • 以任意字符继续
  • .txt 或数字结尾。

您也可以使用[:digit:] 代替[0-9]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-22
    • 2018-05-15
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多