我有一个包含几个文件的文件夹,主要是这三个文件:
vmware-diskmanager
VMware-disklib.tar.gz
vmware-disklib-distrib
如果我想在没有.tar.gz扩展名的情况下回显这两个文件,我可以使用
# echo v*
但是我要说我有另一个档案
VMware-disklib
然后我可以使用
# echo [vV]*
获取所有四个文件,但是我可以用“不显示任何带有点的文件”的内容完成命令行吗?
答案 0 :(得分:0)
如果您使用bash,请参阅man bash
, EXPANSION > 路径名扩展> 模式匹配:
如果使用
extglob
内置函数启用shopt
shell选项,则会识别多个扩展模式匹配运算符。
(此选项似乎是默认选项。)特别是您可以使用:
!(pattern-list):
匹配除了给定模式之外的任何内容
所以在你的情况下这可行:
echo [vV]!(*.*)
find
我使用zsh而不是bash,这不起作用。
我没有检查过zsh是否有相同的语法,我个人会找到find
的解决方案:
find . -maxdepth 1 -iregex './v[^.]*' -exec echo -n "{} " \;
其中:
.
是要搜索的目录-maxdepth 1
将搜索限制为当前目录(无递归)-iregex './v[^.]*'
将不区分大小写的正则表达式应用于当前目录中文件的整个路径-exec echo -n "{}"
表示在没有换行的情况下回显文件名(名称将替换{}
占位符)\;
需要结束-exec
命令。它应该在开头用./
打印文件名,最后不用换行符。但从好的方面来说,你可以使用正则表达式。
答案 1 :(得分:0)
您可以通过说明"不显示任何带有点的文件来完成命令行"。你需要在点之前逃避(使用反斜杠):
# echo [vV]* | grep -v "\."