我有这种结构的目录CSV文件:grep命令字符串中的所有文件目录与某些名称
20090120/
20090121/
20090122/
etc...
我想用grep在所有这些目录中的CSV文件中的某些字符串,但仅限于2009年1月,例如200901 */*。csv
是否有一个bash命令行参数可以做到这一点?
我有这种结构的目录CSV文件:grep命令字符串中的所有文件目录与某些名称
20090120/
20090121/
20090122/
etc...
我想用grep在所有这些目录中的CSV文件中的某些字符串,但仅限于2009年1月,例如200901 */*。csv
是否有一个bash命令行参数可以做到这一点?
是的。 grep "a certain string" 200901*/*.csv
。
你需要的东西,如:
grep NEEDLE 200901*/*.csv
(假设你的搜索字符串是当然的NEEDLE
- 只是将其更改为任何你实际上寻找)。
的bash
壳是完全有能力扩大多层次的路径和文件名。
也就是说,只限于一个目录下的CSV文件。如果你想搜索整个子树,你将不得不使用稍微模式复杂的(和可适应的)find
命令。
虽然,假设你可以在深度设定的限制,你可以逃脱像(三个级别):
grep NEEDLE 200901*/*.csv 200901*/*/*.csv 200901*/*/*/*.csv
试试这个:
grep -lr "Pattern" 200901*/*.csv
尝试的组合找到搜索特定文件名模式和grep的寻找模式:
find . -name "*.csv" -print -exec grep -n "NEEDLE" {} \; | grep -B1 "NEEDLE"
或者,你可以[组globstar和使用**](http://wiki.bash-hackers.org/internals/shell_options#globstar) –