【问题标题】:use echo .??* and show all hidden files, but not . or .. themselves使用 echo .??* 并显示所有隐藏文件,但不显示 .或..他们自己
【发布时间】:2017-10-10 22:45:09
【问题描述】:

嗨,我正在学习 unix,我想运行一个 echo .??*,它显示我所有以 . 开头的文件,但不显示 ...

我的意思是命令运行良好,但没有显示 .a .b .c 文件。

如果文件是

. .. .a .b .c .aa .bb .cc .aaa .abc a b c aaa bbb ccc

echo 的输出必须是

.a .b .c .aa .bb .cc .aaa .abc

如何完成命令?

【问题讨论】:

  • echo .* 做你想做的事吗?
  • @Blorgbeard 号
  • 不,echo .* 显示。 ..
  • 你使用的是哪个外壳?
  • 好的,zsh(或带有我的配置的 zsh)不显示 ...echo .*。 Bash 确实如此。

标签: unix filter sh glob


【解决方案1】:

这取决于您使用的 shell,但在 bash 中您可以执行以下操作(假设启用了 extglobshopt -s extglob):

echo .@(.?|[!.])*

@(...|...) 是一个“或”模式。这匹配与..?*.[!.]* 匹配的每个文件。

..?* 匹配以.. 开头的文件,后跟至少一个其他字符。这会查找所有以 .. 开头的名称,.. 本身除外。

.[!.]* 匹配以. 开头,后跟非. 字符的文件。这匹配所有“普通”隐藏文件(第二个字符不是点)。

请注意,在您的示例中,没有一个文件以 .. 开头,因此 .[!.]* 足以产生所需的输出。

【讨论】:

    猜你喜欢
    • 2012-10-24
    • 1970-01-01
    • 2011-09-08
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多