在shell中如何判断HDFS中的文件目录是否存在

Linux文件系统中,我们可以使用下面的Shell脚本判断某个文件是否存在:

# 这里的-f参数判断$file是否存在

if [ ! -f "$file" ]; then

  echo "文件不存在!"

fi

但是我们想判断HDFS上某个文件是否存在咋办呢?别急,Hadoop内置提供了判断某个文件是否存在的命令:

[iteblog@www.iteblog.com ~]$ hadoop fs -help

......

-test -[defsz] <path>:Answer various questions about <path>, with result via exit status.

          -d  return 0 if <path> is a directory.

          -e  return 0 if <path> exists.

          -f  return 0 if <path> is a file.

          -s  return 0 if file <path> is greater than zero bytes in size.

          -z  return 0 if file <path> is zero bytes in size.

        else, return 1.

......

从上面的输出可以看出,我们可以使用test命令来判断某个文件是否存在。如果文件存在,这个命令将返回0;反之则返回1。

[iteblog@www.iteblog.com ~]$ hadoop fs -test -e /path/not/exist

[iteblog@www.iteblog.com ~]$ echo $?

1

 

[iteblog@www.iteblog.com ~]$ hadoop fs -test -e /path/exist

[iteblog@www.iteblog.com ~]$ echo $?

0

所以我们可以在Shell里面判断HDFS上某个文件是否存在:

hadoop fs -test -e /path/exist

if [ $? -eq 0 ] ;then 

    echo 'exist' 

else 

    echo 'Error! path is not exist' 

fi 

test命令还可以判断某个文件是否是文件夹、是否是文件、某个文件大小是否大于0或者等于0。

hadoop fs -test -d /path/exist

if [ $? -eq 0 ] ;then 

    echo 'Is a directory' 

else 

    echo 'Is not a directory' 

fi

  

hadoop fs -test -f /path/exist

if [ $? -eq 0 ] ;then 

    echo 'Is a file' 

else 

    echo 'Is not a file' 

fi

 

hadoop fs -test -s /path/exist

if [ $? -eq 0 ] ;then 

    echo 'Is greater than zero bytes in size' 

else 

    echo 'Is not greater than zero bytes in size' 

fi

 

 

hadoop fs -test -z /path/exist

if [ $? -eq 0 ] ;then 

    echo 'Is zero bytes in size.' 

else 

    echo 'Is not zero bytes in size. '

fi

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值