gpt4 book ai didi

linux - BASH extglob 否定没有像我预期的那样工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:36:37 25 4
gpt4 key购买 nike

假设我有以下目录结构

./testdir
./testdir/a.c
./testdir/b.c
./testdir/testdir2/
./testdir/t.tar

假设我的 CWD 是 testdir,我想回显所有没有 .tar 扩展名的目录条目。

这个有效:

echo *.!(tar)

但是,我希望这会产生相同的结果,但事实并非如此:

echo *!(tar)

第二个命令中只缺少句点。第二个 echo 命令列出了 d.tar 文件。星号 glob 字符应匹配所有字符,而 extglob negate 应列出任何不以 tar 结尾的字符。

最佳答案

让我们从这些文件开始:

$ ls
a.b b.c testdir2 t.tar

这匹配所有有句点但句点后没有 tar 的文件:

$ echo *.!(tar)
a.b b.c

这匹配所有不以 tar 结尾的文件:

$ echo !(*tar)
a.b b.c testdir2

这是令人惊讶但不应该感到惊讶的 extglob:

$ echo *!(tar)
a.b b.c testdir2 t.tar

*本身可以匹配任何东西,比如t.tar。因为在t.tar之后不需要添加tar,所以这是一个匹配。

关于linux - BASH extglob 否定没有像我预期的那样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29382013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com