bash:grep只返回"是一个目录"搜索存在的文件时

时间:2015-06-07 21:52:58

标签: macos bash

直到最近,我才能让脚本在继续之前确保某个目录中存在某个文件。

现在,脚本找不到文件,或者当grep工作时,只返回" grep:/ Users / user / Downloads:是一个目录"完成后。"

该文件存在于目录中,但grep不再想要与之交互。这就是我与之合作的事情:

if grep -q 'file.bin' ~/Downloads; then echo "It works!" exit 1 fi

任何建议都将不胜感激。感谢。

1 个答案:

答案 0 :(得分:3)

您要求grep在名为file.bin的文件中搜索字符串(~/Downloads)...这是一个目录。所以你看到的错误是准确的; grep仅对文件进行操作,而不对目录进行操作。

如果您想查看文件是否存在,您可能只想对文件使用标准shell测试:

if [ -f ~/Downloads/file.bin ]; then
    echo "It exists!"
fi

您可以使用grep查看文件中是否存在字符串

if grep -q "a string" ~/Downloads/file.bin; then
    echo "The file contains the string"
fi