我想用 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