欢迎关注大数据技术架构与案例微信公众号:过往记忆大数据
过往记忆博客公众号iteblog_hadoop
欢迎关注微信公众号:
过往记忆大数据

在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 
本博客文章除特别声明,全部都是原创!
原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【在shell中如何判断HDFS中的文件目录是否存在】(https://www.iteblog.com/archives/1607.html)
喜欢 (19)
分享 (0)
发表我的评论
取消评论

表情
本博客评论系统带有自动识别垃圾评论功能,请写一些有意义的评论,谢谢!