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

标签 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

最佳答案

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

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

或者如果您想专门针对目录进行测试,则可以使用另一个开关:

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

可以找到更全面的列表 here .

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

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

这将为您提供匹配目录的计数。请注意,可能生成的任何错误消息都将定向到/dev/null,这可能正是您想要的,以避免错误扰乱您的输出。

关于linux - 脚本如果 ls -lrtd 返回文件或目录不存在该怎么办,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29605765/

相关文章:

bash - 通过awk将文件中的数值更改为字符

regex - Linux '' 查找 '' command: File aging for special extention. Regex and mtime doesn' t 一起工作

.net - 如何停止 .NET Telemetry 以停止在 Ubuntu Linux 中收集数据

linux - 在装有 linux 的系统上检测网卡和端口

bash - 在路径变量中使用带空格的 perl system() 查询

bash - Bash 中的模式匹配

python - 如何修改 STDOUT?

计算超线程机器中的进程利用率

java - 如何在 Java 中为套接字连接创建软件负载平衡器

linux - bash 中文件列表的良好输出