7

我在具有这种结构的目录中有 csv 文件:

20090120/
20090121/
20090122/
etc...

我想在这些目录中的所有 csv 文件中查找某个字符串,但仅限于 2009 年 1 月,例如 200901*/*.csv

是否有一个 bash 命令行参数可以做到这一点?

4

4 回答 4

12

是的。grep "a certain string" 200901*/*.csv.

于 2013-01-02T02:39:37.123 回答
5

你需要类似的东西:

grep NEEDLE 200901*/*.csv

(假设您的搜索字符串NEEDLE当然是 - 只需将其更改为您实际查找的任何内容)。

shell 非常有bash能力扩展多级路径和文件名。

也就是说,当然,仅限于 CSV 文件向下一个目录。如果要搜索整个子树,则必须使用稍微复杂(且适应性强)的find命令。

但是,假设您可以设置深度限制,您可以摆脱类似(三个级别):

grep NEEDLE 200901*/*.csv 200901*/*/*.csv 200901*/*/*/*.csv 
于 2013-01-02T02:39:48.930 回答
4

试试这个 :

grep -lr "Pattern" 200901*/*.csv 
于 2013-01-02T04:13:25.457 回答
1

尝试结合使用find来搜索特定的文件名模式和grep来查找模式:

find . -name "*.csv" -print -exec grep -n "NEEDLE" {} \; | grep -B1 "NEEDLE"
于 2017-07-26T18:01:29.897 回答