【问题标题】:grep filename and grep in the filegrep 文件名和文件中的 grep
【发布时间】:2015-01-22 17:47:14
【问题描述】:

我的目录中有一个以 .txt 结尾的文件,但在名称之前总是不同的点。我想在更改名称“http”的文件中。看, 所以不幸的是,它不起作用,

| Grep txt \\ |. Grep "http"

编辑: 我有睾丸:

卷曲ftp://user:pw@ip:port/directory/ ls | grep ".txt" | xargs grep "http"

错误:curl:(6)无法解析主机:ls

curl ftp://user:pw@ip:port/directory/ printf "%s\n" *.txt | xargs grep "http"

错误:

curl:(6) 无法解析主机:printf curl:(6) 无法解析主机:%s\n curl:(6) 无法解析主机:*.txt grep:无效选项 -- '-'用法:grep [OPTION]... PATTERN [FILE]... 尝试 'grep --help' 获取更多信息。

【问题讨论】:

  • 你的问题很不清楚。请显示文件包含的内容,以及您尝试解决问题的代码。
  • 欢迎来到 Stack Overflow。请尽快阅读About 页面。你的问题很不清楚。 Unix 区分大小写;写grep 而不是Grep。您的命令行语法与 Bash 允许的不匹配。前导的| 是语法错误(它需要在命令前面)。 |. 表示法与| . 的含义相同,并且反过来尝试读取文件Grep,就好像它是shell 命令一样。不是个好主意。
  • 他可能正在使用 OS X,我认为情况无关紧要。
  • curl ftp://user:pw@ip:port/directory/ ls 您是否要获取远程目录列表?祝你好运。

标签: bash grep


【解决方案1】:

你可以这样做:

ls | grep ".txt" | xargs grep "http"

感谢乔纳森的评论!最好这样做:

printf "%s\n" *.txt | xargs grep "http"

【讨论】:

  • @JonathanLeffler 是的,我记得在某处读到,这样做比使用管道 ls 更好(但我不得不承认我不记得原因)。
  • 因为当文件名有空格时,ls 的输出很难解释。无论哪种方式都使用ls。必要的全套扭曲不值得考虑。 xargs 也需要修饰一下。
【解决方案2】:

您可以使用findgrep 的组合:

find /your/path -type f -name '*.txt' -exec grep http "{}" \;

您可以将其理解为“在 /your/path 中查找名称以 .txt 结尾的任何文件并在其上运行 grep http”。

【讨论】:

  • 使用+ 代替\; 以获得由单个grep 处理的多个文件。您可能对想要的东西有正确的解释;无论哪种方式,我都不太了解措辞。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多