Unix shell脚本,用于检查是否存在具有相同名称的文件或目录

时间:2017-04-05 09:58:18

标签: shell unix

我想检查是否存在具有相同名称的文件或目录。 是否有任何运算符(期望-e)来检查文件或目录,我不想添加任何额外条件。

以下代码可以正常检查文件是否存在:

#!/bin/bash
if [ -e /path/to/the/file/sample ]
then
    echo "ok"
else
    echo "nok"
fi

请注意sample可以是文件或目录。

1 个答案:

答案 0 :(得分:0)

在我使用bash 4.2的测试中,条件[ -e /path/to/the/file/sample ]适用于 BOTH 文件和目录。

作为替代方案,您可以:
要么根据bash man page.

使用另一个像-d这样的运算符
if [ -e /path/to/the/file/sample ] || [ -d /path/to/the/file/sample ];then echo "ok"; else echo "nok";fi

或者使用ls等命令的退出代码。

if ls "/path/to/the/file/sample" &>/dev/null ; then echo "is here";else echo "not here";fi

如果您尝试在现有文件或目录上执行ls ls将返回0,否则将返回非零值(在我的测试中为不存在的文件或目录返回2) 。
需要引用来处理可能包含空格的正确名称。