我在具有这种结构的目录中有csv文件:
20090120/
20090121/
20090122/
etc...
我想在这些目录中的所有csv文件中grep某个字符串,但仅限于2009年1月,例如200901 * / *。CSV
是否有可以执行此操作的bash命令行参数?
答案 0 :(得分:12)
是。 grep "a certain string" 200901*/*.csv
。
答案 1 :(得分:5)
您需要以下内容:
grep NEEDLE 200901*/*.csv
(假设您的搜索字符串当然是NEEDLE
- 只需将其更改为实际寻找的任何内容。
bash
shell非常能够扩展多级路径和文件名。
那当然只限于一个目录下的CSV文件。如果要搜索整个子树,则必须使用略微模式复杂(且适应性强)的find
命令。
虽然,假设您可以设置深度限制,您可以使用类似的东西(三个级别):
grep NEEDLE 200901*/*.csv 200901*/*/*.csv 200901*/*/*/*.csv
答案 2 :(得分:4)
试试这个:
grep -lr "Pattern" 200901*/*.csv
答案 3 :(得分:0)
尝试结合使用查找来搜索特定的文件名模式,然后使用 grep 来查找模式:
find . -name "*.csv" -print -exec grep -n "NEEDLE" {} \; | grep -B1 "NEEDLE"