我正在尝试检查几个文件是否存在,但事先并不知道这些文件位于何处。因此,我想到find
了事实上实用程序来执行此操作...它按预期工作,但问题是它不承认文件的不存在,也就是说,如果在搜索目录下不存在文件,那么正如您所期望的那样,它不会显示在结果中。
我想这没问题,因为该find
命令旨在查找文件,而这些文件实际上首先存在(哦)。但我想知道是否有办法让该find
命令返回“文件未找到”或类似的消息,以告知文件不存在,而不是默默地失败(或成功)。
我以为也许我可以通过使用find
查询的返回代码来解决这个问题$?
,但即使没有找到该文件,返回代码也是0
。
这只是我所拥有的一个例子......
find . -name foo.sh
find . -name bar.sh
如果其中唯一的文件是foo.sh
:则返回什么?
./directory/foo.sh
我希望收到的是:
./directory/foo.sh
bar.sh not found
有人知道我可以使用什么find
标志或其他解决方法吗?
谢谢!
答案1
您可以尝试find . -name foo | grep \/
设置退出代码。
grep 在输出中查找任何 /,如果未找到,则返回退出代码 1
答案2
我不认为寻找可以选择说“未找到您查找的内容“”。
您可以计算返回的行数寻找如果是 0,则打印“未找到”消息。例如:
#/bin/bash
# put find output to a temp file
find . -name 'foo.sh' > /var/tmp/find.tmp.$$
# count the number of lines
COUNT=`wc -l /var/tmp/find.tmp.$$ | awk '{ print $1 }'`
if [ $COUNT -eq 0 ]
then
# find didn't return any results, so print message
echo "foo.sh not found"
else
# find returned results, print them
cat /var/tmp/find.tmp.$$
fi
# remove temp file
rm /var/tmp/find.tmp.$$
这将打印输出寻找命令,如果有任何结果或'未找到 foo.sh' 当未找到结果时。