设为首页 加入收藏

TOP

Shell中判断HDFS中的文件或目录是否存在
2019-03-16 12:16:42 】 浏览:254
Tags:Shell 判断 HDFS 文件 目录 是否 存在
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_43215250/article/details/85120123

在Linux文件系统中,Shell脚本判断某个文件是否存在:

# 这里的-f参数判断$file是否存在 
if [ ! -f "$file" ]; then
  echo "文件不存在!"
fi

Hadoop提供了test命令判断HDFS上某个文件或目录是否存在:

[root@node00 ~]# hdfs dfs -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。

[root@node00 ~]# hdfs dfs -test -e /path/not/exist
[root@node00 ~]# echo $
1
[root@node00 ~]# hdfs dfs -test -e /path/exist
[root@node00 ~]# echo $
0
[root@node00 ~]# 

那么我们可以在Shell脚本里面判断HDFS上某个文件是否存在

#!/bin/bash
hdfs dfs -test -e /path/exist
if [ $ -eq 0 ] ;then 
    echo 'exist' 
else 
    echo 'Error! NO Such File Or Directory !' 
fi
...

test 命令还可以判断:**

  1. -d某个路径是否是文件夹( -d);
  2. -f某个路径是否是文件( -f);
  3. -s某个文件大小是否大于0;
  4. -z某个文件大小等于0
#!/bin/bash

#判断是否是文件夹
hdfs dfs -test -d /path/exist
if [ $ -eq 0 ] ;then 
    echo 'Is a directory' 
else 
    echo 'Is not a directory' 
fi

#判断是否是文件
hdfs dfs -test -f /path/exist
if [ $ -eq 0 ] ;then 
    echo 'Is a file' 
else 
    echo 'Is not a file' 
fi

#判断文件大小是否大于0
hdfs dfs -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
 
#判断文件大小是否等于0
hdfs dfs -test -z /path/exist
if [ $ -eq 0 ] ;then 
    echo 'Is zero bytes in size.' 
else 
    echo 'Is not zero bytes in size. '
fi
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Hadoop-->HDFS原理总结 下一篇hdfs原理

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目