美好的一天,
文件名可以是
是否可以在没有完全列出文件名的情况下执行类似grep abc_source|source2_201501.csv
的操作,因为我正在使用的文件名比获取这两个选项的示例要长得多?
感谢您的帮助。
答案 0 :(得分:2)
在grep中使用扩展的正则表达式标志。
例如:
grep -E abc_source.?_201501.csv
会在您的示例中找到两行。您可以考虑更适合您数据的其他正则表达式模式。
答案 1 :(得分:0)
您可以一次使用Bash globbing grep in some files。
例如,grep for the string" hello"在文件名以abc_source开头并以201501.csv结尾的所有文件中,发出以下命令:
grep hello abc_source*201501.csv
您还可以使用-r标志在给定文件夹下的所有文件中递归grep - 例如当前文件夹(。)。
grep -r hello .
答案 2 :(得分:0)
如果您询问shell中文件名匹配的模式,Bash中的extended globbing工具允许您说
shopt -s extglob
grep stuff abc_source@(|2)_201501.csv
使用单个glob表达式搜索两个文件。
答案 3 :(得分:0)
最简单的可能性是使用大括号扩展:
grep pattern abc_{source,source2}_201501.csv
这与:
完全相同grep pattern abc_source{,2}_201501.csv
您可以在一个单词中使用多个大括号模式:
grep pattern abc_source{,2}_2015{01..04}.csv
扩展为
grep pattern abc_source_201501.csv abc_source_201502.csv \
abc_source_201503.csv abc_source_201504.csv \
abc_source2_201501.csv abc_source2_201502.csv \
abc_source2_201503.csv abc_source2_201504.csv