如何检查两个文件中的一个或两个是否存在?

如何检查两个文件中的一个或两个是否存在?

我如何在 shell 脚本中检查任何存在两个文件?

这两个文件中哪一个存在或者两者都存在并不重要。

答案1

其他两个答案都运行test两次。虽然这可行,但它存在两个进程分支的低效率问题。您可以使用以下命令在单个测试中完成“或”:

if [ -e file1 -o -e file2 ]; then ...

这会稍微更有效率。

答案2

if test -e file1 || test -e file2; then
  # At least one of file1 or file2 exists
  ...
else
  # Neither file1 nor file2 exists
fi

test -e检查是否存在。您可能需要更具体的测试,例如-b(存在并且是块特殊)、-c(存在并且是字符特殊)、-d(存在并且是目录)、-f(存在并且是常规文件)等。

答案3

虽然/bin/test手册页上test没有给出名称,但您可以使用它test -a /path/to/file来确定文件是否存在。

if [ -a file1 ] || [ -a file2 ]; then echo "I found something"; fi

||实际上是一个逻辑“或”。

相关内容