grep filename[asterisk] returns unexpected result
grep 带星号的文件名 返回了意外的结果
grep filename[asterisk] returns unexpected result [1]
1 | $ ls |
在执行grep
命令之前,*
先被 shell expanded 了,所以实际执行的命令是ls | grep file1.txt file2.txt 'file*.txt'
就变成了在 file2.txt 和 ‘file*.txt’ 中查找 ‘file1.txt’ 这个文本,而因为已经有文件输入,ls 的管道被忽略了
验证
1 | echo 'no file1.txt' > file2.txt |
所以,如果想只查找 ‘file*.txt’,则可以加引号
1 | $ ls | grep '*.txt' |
如果想使用其正则功能,则需要加上 -E
1 | $ ls | grep -E '*.txt' |