脚本如果ls -lrtd返回文件或目录不存在该怎么办

时间:2015-04-13 12:48:39

标签: linux bash

这是我正在尝试编写的脚本的一部分。

如果目录存在则没有问题,但如果不存在则我不知道该怎么办。

有人知道如何解决这个问题。

由于

do echo "$number"

newdir="../FILE-ID/*/${number:2:1}${number:1:1}/+33$number"

nbrdir=$(ls -lrtd $newdir|wc -l)

echo "$nbrdir"

if [ "$nbrdir" -gt 1 ]; then

   echo "$number"
   echo "error 1.greater"

fi

if [ "$nbrdir" -eq 1 ]; then

     echo " equal 1"

else

   echo "equal 0"

fi

done

2 个答案:

答案 0 :(得分:0)

[-d $ newdir]&& echo“目录存在”|| echo“目录不存在”

答案 1 :(得分:0)

您可以使用以下方法测试文件(包括目录)是否存在:

if [[ -f ${newdir} ]]; then ...

或其他开关,如果您只想专门测试目录:

if [[ -d ${newdir} ]]; then ...

可以找到更全面的列表here

如果您的目录名称包含通配符且可能匹配为零或更多,则可以使用:

nbrdir=$(ls -1d ${newdir} 2>/dev/null | wc -l)

这应该给你一个匹配目录的计数。请注意,可能生成的任何错误消息都将定向到/ dev / null,这可能是 您想要的内容,以避免错误导致输出混乱。