【问题标题】:How to get the grep command to search a specified directory?如何让grep命令搜索指定目录?
【发布时间】:2016-11-15 19:40:34
【问题描述】:

我正在尝试创建一个bash 命令,该命令使用grep 在指定目录中搜​​索参数。我该怎么做。目前它只搜索当前目录。我尝试了以下方法,但它不起作用:

ls $directoryName -l | grep "$1"

【问题讨论】:

  • 在最简单的情况下,例如:grep "$1" "$directoryName/*"。为了获得更大的灵活性,您可能需要考虑:find "$directoryName" -type f -exec grep "$1" {} +
  • 你试过grep -r $1 $directory吗? (-r 使 grep 递归)
  • @NimaGhotbi 很好,每当我这样做时都会给我错误。第 4 行:/a/directory:是一个目录。
  • 在您的原始帖子中,您从命令ls $directoryName -l | grep "$1" 中看到了什么确切的输出?
  • @RobDavis 我得到的输出是 >>>> ./exampleFolder: line 4: /home/../../../.exampleFolder: Is a directory

标签: bash shell unix command-line


【解决方案1】:

我确信有更好的方法可以做到这一点,但是

ls -lah $directoryName > /usr/tmp/test
grep $1 /usr/tmp/test
rm /usr/tmp/test

编辑:不过,使用find 可能会更好。

find $directoryName -name $1

【讨论】:

    【解决方案2】:

    工作示例: grep -e "Exec" /usr/share/applications/*

    【讨论】:

      【解决方案3】:

      以下示例将以文字方式递归搜索(包括在子文件夹和隐藏文件中)参数或模式(它将按文字搜索“$1”,不允许替换):

      grep -re '$1' /folder/folder
      

      现在,如果您想搜索参数的值,那么下面的代码将允许替换并执行此操作:

      grep -re "$1" /folder/folder
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-13
        • 2017-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-10
        相关资源
        最近更新 更多