【问题标题】:command to search string in linux environmentlinux环境下搜索字符串的命令
【发布时间】:2016-05-08 01:44:05
【问题描述】:

我有 unix 目录路径。此目录包含 5 个子文件夹。 在每个子文件夹下,我有 10 个文件(类似)。此子文件夹表示每个站点或位置文件。

我想搜索每五个子文件夹中存在的特定数字。

我目前正在使用 grep 命令,这对于在子文件夹中查找字符串很有用,但不是在所有子文件夹中查找字符串

grep -l 搜索字符串 *. 这是为子文件夹执行的。 我想使用一个命令搜索所有五个子文件夹。

【问题讨论】:

  • 您可能正在寻找 grep -l whatever */*grep -rl whatever .,但您的意思太模糊了,我不确定我是否理解您想要什么。
  • 假设我的搜索字符串是 404 566 7898,那么我的命令看起来像 grep -l "404 566 7898"
  • 按照 zwol 的建议,试试 grep -rl "404 566 7898"grep -l "404 566 7898" */*
  • 令我困惑的不是搜索字符串,而是目录结构。是不是正好有两层深?是否有中间级别的文件也应该被搜索?是否有任何级别的文件应该被搜索,如果有,是否有一个shell glob模式定义了应该被搜索的文件的名称?每个目录会有所不同吗?您需要在搜索中包含隐藏文件和/或目录吗?

标签: grep


【解决方案1】:

using one single command - 为什么? UNIX 建立在使用正确命令组合来获得最佳结果的理念之上,您为什么想要做一些不同的事情?

在这种情况下,用于查找文件的 UNIX 工具命名为 find,用于G全局搜索 R 的 UNIX 工具文件中的常规Expression 和Print 结果是grep,因此解决您的问题的正确方法是findgrep 的组合,例如:

find . -type f -print0 | xargs -0 grep -l regexp

【讨论】:

  • 是的,这是我用来在单个目录下的多个文件夹中查找字符串的命令。谢谢
【解决方案2】:
grep -r  

是你想要的

人 grep
/--递归

-r, --recursive
Read all files under each directory, recursively, following
symbolic links only if they are on  the  command  line.
Note that if no file operand is given, grep searches the working directory.
This is equivalent to the -d recurse option.

【讨论】:

    猜你喜欢
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多