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