我很难发现哪种方法最好...... (debian最新,侏儒)
这有效;
$ ls -1 | grep "JPG|RAF|TIF"
我正在尝试用变量
替换“JPG | RAF | TIF”e.g。
$ xFILTER="JPG RAF TIF"
我试图分配给xFILTER变量...
- xFILTER = “JPG \ | RAF \ | TIF”
- xFILTER = “\” JPG | RAF | TIF \ “”
- xFILTER = “JPG \ NRAF \ nTIF”
醇>
有人可以指导我采取更明智的做法吗?
谢谢。
答案 0 :(得分:3)
这应该有效:
xFILTER="JPG|RAF|TIF"
ls -1 | grep -E "$xFILTER"
但是,谨慎的是,当文件可以包含空格或换行时,解析ls
输出并不总是好的。查看shopt -s extglob
以启用扩展通配并按扩展模式搜索文件。
答案 1 :(得分:0)
您正在使用grep支持的不同正则表达式语法。
引用man page,
在基本的正则表达式中,元字符?,+,{,|,(和)失去了它们的特殊含义;而是使用反斜杠版本\?,+,{,\ |,(和)。
我很惊讶你说你的第一个例子有效。 使用以下之一:
xFILTER="JPG\|RAF\|TIF" ; ls -1 | grep $xFILTER
xFILTER="JPG|RAF|TIF" ; ls -1 | grep -E $xFILTER