如何检查目录中的任何文件是否具有给定的字符串

时间:2013-07-05 09:55:02

标签: bash shell grep

Folder_name = "D:\newfolder\xxx"
echo "enter keyword"
read string
if grep $string $Folder_name;
then
  echo "yes"
else
  echi "no"
fi

5 个答案:

答案 0 :(得分:1)

使用此:

Folder_name=/newfolder/xxx
echo "enter keyword"
read string
if grep -q -F "$string" "$Folder_name"/*
then echo yes
else echo no
fi
  1. shell变量赋值中=周围没有空格。
  2. grep需要文件名参数,而不是目录,除非您使用-r选项以递归方式搜索目录。
  3. -q选项告诉grep不要打印匹配的行。
  4. -F选项告诉它将$string视为逐字字符串而不是正则表达式。
  5. 如果变量包含空格或通配符,则应引用变量。

答案 1 :(得分:1)

如果您正在寻找是/否回复,可以使用以下一行命令:

grep -q $string $Folder_name/* && echo 'Yes'|| echo 'No'

答案 2 :(得分:1)

我会说

found=false
for file in *; do
    if grep -q "$string" "$file"; then
        found=true
        break
    fi
done
if $found; then
    echo "at least one file contains $string"
else
    echo "no files contain $string"
fi

答案 3 :(得分:1)

您是在寻找包含特定字符串的文件,还是在寻找包含特定字符串的文件名?

包含字符串的文件:

find . -type f -exec grep -l "string" {} \;

包含特定字符串的文件名:

find . -type f | grep "string"

答案 4 :(得分:1)

您可以使用此搜索

  cd "$Folder_name" && count=$(grep -R -c "$string")
  if [ $count -gt 0 ]; then
      echo "Yes"
  else
      echo "No"
  fi

这会递归搜索文件夹中的所有文件。