如何使用 tcsh 搜索空交替

如何使用 tcsh 搜索空交替

我想用 ls 搜索一些空的替代,但没有任何效果。我有一个文件列表:foo.txt foouubar.txt fooubbar.txt fooubar_1.txt foounix.txt

我只想拥有foo.txt并且foouubar.txt

我试过:

ls foo\(*ubar\|\(\)\).txt 

但结果是空的。我的命令行有错误吗?

我在tcsh

答案1

这是一个适用于 的解决方案tcsh。我会使用大括号扩展运算符 ,{..}如下所示:

$ echo foo{,uubar}.txt
foo.txt foouubar.txt

这是通过创建一组子字符串来实现的,字符串“foo”交替地添加到其中。在这种情况下,我们使用{,...}这意味着尝试的第一个子字符串什么都没有。第二个子字符串是“uubar”。

参考

答案2

请注意,当您ls与管道一起使用时,文件一次一行输出,允许您使用grep和其他过滤器;因此,以下内容将独立于所使用的 shell 工作(但会在不同的行上生成文件)。

ls | egrep "foo(uubar|)\.txt"

如果您想要恢复列:

ls | egrep "foo(uubar|)\.txt" | column

相关内容