Bash grep表示具有特定名称的目录中所有文件中的字符串
我在具有以下结构的目录中有csv文件:Bash grep表示具有特定名称的目录中所有文件中的字符串,bash,directory,grep,find,Bash,Directory,Grep,Find,我在具有以下结构的目录中有csv文件: 20090120/ 20090121/ 20090122/ etc... 我想在这些目录中的所有csv文件中搜索特定字符串,但仅限于2009年1月,例如200901*/*.csv 是否有bash命令行参数可以执行此操作?是grep“某个字符串”200901*/*.csv您需要以下内容: grep NEEDLE 200901*/*.csv (当然,假设您的搜索字符串是NEEDLE,只需将其更改为您实际要查找的内容即可) bashshell能够扩展多级路径
20090120/
20090121/
20090122/
etc...
我想在这些目录中的所有csv文件中搜索特定字符串,但仅限于2009年1月,例如200901*/*.csv
是否有bash命令行参数可以执行此操作?是
grep“某个字符串”200901*/*.csv
您需要以下内容:
grep NEEDLE 200901*/*.csv
(当然,假设您的搜索字符串是NEEDLE
,只需将其更改为您实际要查找的内容即可)
bash
shell能够扩展多级路径和文件名
也就是说,当然,只限于CSV文件一个目录下。如果要搜索整个子树,则必须使用稍微复杂(且适应性强)的find
命令
尽管如此,假设您可以设置深度限制,您可以通过以下方式逃脱(三个级别):
试试这个:
grep -lr "Pattern" 200901*/*.csv
尝试组合使用find搜索特定的文件名模式和grep查找模式:
find . -name "*.csv" -print -exec grep -n "NEEDLE" {} \; | grep -B1 "NEEDLE"
或者,你可以
find . -name "*.csv" -print -exec grep -n "NEEDLE" {} \; | grep -B1 "NEEDLE"