zoukankan      html  css  js  c++  java
  • 判断文件是否存在 local/hdfs

    在Linux文件系统中,我们可以使用下面的Shell脚本判断某个文件是否存在:
    # 这里的-f参数判断$file是否存在
    if [ ! -f "$file" ]; then
    echo "文件不存在!"
    fi
    但是我们想判断HDFS上某个文件是否存在咋办呢?别急,Hadoop内置提供了判断某个文件是否存在的命令:
    $ 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。
    $ hadoop fs -test -e /path/not/exist
    $ echo $?
    1

    $ hadoop fs -test -e /path/exist
    $ 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

  • 相关阅读:
    [整理]Win下好用的Markdown工具
    tcpip http socket
    [整理].net中的延迟初始化器
    [整理]ASP.NET WEB API 2学习
    [整理]ASP.NET MVC 5
    [转载]AngularJS 指令 用法
    [整理]HTML5 WebSocket
    [整理]CSS3 滤镜
    [整理]WebAPP开发的框架
    [整理]AngularJS移动端开发遇到的问题
  • 原文地址:https://www.cnblogs.com/liupuLearning/p/7193376.html
Copyright © 2011-2022 走看看