在我看来,grep -v
显示的文件不包含以下字符串。
使用grep -v ".c"
?
$ ls -1
a.out
easy.txt
hard.txt
highscores.txt
main.c
main.txt
util.c
$ ls -1 | grep -v ".c"
a.out
easy.txt
hard.txt
medium.txt
答案 0 :(得分:2)
grep命令中的".c"
是正则表达式,.
表示“任何字符”。
要解决此问题,您可以
逃离时期:
grep -v '\.c$'
我添加了“字符串结尾”锚点$
,以排除something.cpp
等文件的误报。
对“固定字符串”使用-F
选项:
grep -vF '.c'
请注意,这也会排除something.cpp
,这可能不是您想要的。
使用扩展的glob模式排除以.c
结尾的任何内容:
shopt -s extglob
ls -1 !(*.c)
在这里,*.c
不是正则表达式,而是一个glob模式,其中.
是一个文字句点,没有特殊含义。