我希望程序看起来像这样:
read a
if[ find . name $a ]; then
echo "You found the file"
else "You haven t found the file"
fi
答案1
无论是否找到任何内容,find
始终返回 true。您可以使用grep
以下方法确定是否find
找到内容:
read -r a
if find . -maxdepth 1 -name "$a" -print -quit | grep -q .
then
echo "You found the file"
else
echo "You haven't found the file"
fi
-print -quit
正如 Eliah 所说,在第一次匹配后退出 ( ) 应该可以提高性能。使用-maxdepth 1
将结果限制在当前目录中 - 但这样find
做有点过头了。
答案2
如果不有使用该find
命令,使用test
命令(或其缩写形式[
... ]
)会更容易,恕我直言。使用test
,e
开关可以完成您想要的操作。
#!/bin/bash
read -r a
if [[ -e $a ]]; then
echo "You found the file"
else
echo "You haven't found the file"
fi
但请注意,test
只会在当前目录中查找文件,而不是在任何子目录中查找(感谢 EliahKagan 的提醒)。
您可以test
在Bash 黑客维基