有没有办法在使用“find”命令时显示“未找到文件”或类似的消息?

有没有办法在使用“find”命令时显示“未找到文件”或类似的消息?

我正在尝试检查几个文件是否存在,但事先并不知道这些文件位于何处。因此,我想到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' 当未找到结果时。

相关内容