Bash:如何在文件列表中进行grep(其中一些是zip文件)

时间:2018-07-10 12:58:59

标签: bash

我有一个我在高级搜索的文件列表,一些.txt和一些.gz

每个文件都是一个文本文件。

是否有命令查找获取列表并grep每个文件?我到目前为止的尝试

find $(pwd) -name "instr.txt" -o -name "instr.txt.gz"

2 个答案:

答案 0 :(得分:1)

zgrep将在纯文本文件和gz归档文件中成功搜索模式,因此以下命令应该可以正常工作:

find . \( -name "instr.txt" -o -name "instr.txt.gz" \) -exec zgrep searchedPattern {} +

一些注意事项:

  • 根据匹配的文件数,zgrep除了匹配的行外,是否会输出文件名。使用-H强制其出现,或使用-h强制其消失。
  • 我已经用等效的相对路径$(pwd)代替了.子外壳,但这会影响输出中的文件名。如果需要输出绝对路径,则可以使用子shell。
  • 您需要使用括号将-o的两侧分组,否则操作仅在最右侧执行。一种较不便携的替代方法是使用-regex 'instr.txt\(.gz\)?'

答案 1 :(得分:0)

假设您没有递归执行此操作(不搜索子目录),这是一个不使用class TiledMap{ private: int mapArray[100][100];// actual dimensions would be smaller than 100 char width, height; public: void setDimensions(char width, char height); //... } ...

的简单解决方案
find