大家好,
文件名可以是
- abc_source_201501.csv 或者,
- abc_source2_201501.csv
是否可以在不完全列出文件名的情况下执行类似grep abc_source|source2_201501.csv
的操作,因为我正在使用的文件名比获得两个选项的示例要长得多?
感谢您在这里的帮助。
在 grep 中使用扩展正则表达式标志。
例如:
grep -E abc_source.?_201501.csv
将在您的示例中提供两行。您可以考虑更适合您的数据的其他正则表达式模式。
您可以使用 Bash 通配来一次在多个文件中进行 grep。
例如,要在文件名以 abc_source 开头并以 201501.csv 结尾的所有文件中对字符串"hello"进行 grep,请发出以下命令:
grep hello abc_source*201501.csv
您还可以使用 -r 标志在给定文件夹下的所有文件中递归 grep - 例如当前文件夹 (.)。
grep -r hello .
如果你问的是 shell 中文件名匹配的模式,Bash 中的扩展通配工具可以让你说
shopt -s extglob
grep stuff abc_source@(|2)_201501.csv
以使用单个 glob 表达式搜索这两个文件。
最简单的方法是使用大括号扩展:
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