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

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

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

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

[[email protected] ~]$ 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。

[[email protected] ~]$ hadoop fs -test -e /path/not/exist
[[email protected] ~]$ echo $?
1
[[email protected] ~]$ hadoop fs -test -e /path/exist
[[email protected] ~]$ echo $?
0

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

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


猜你喜欢

欢迎关注本公众号:iteblog_hadoop:

0、回复 电子书 获取 本站所有可下载的电子书

1、Apache Spark 统一内存管理模型详解

2、HDFS 副本存放磁盘选择策略详解

3、盘点2017年晋升为Apache TLP的大数据相关项目

4、干货 | 深入理解 Spark Structured Streaming

5、Apache Spark 黑名单(Blacklist)机制介绍

6、Kafka分区分配策略(Partition Assignment Strategy)

7、Spark SQL 你需要知道的十件事

8、干货 | Apache Spark 2.0 作业优化技巧

9、[干货]大规模数据处理的演变(2003-2017)

10、干货 | 如何使用功能强大的 Apache Flink SQL

11、更多大数据文章欢迎访问https://www.iteblog.com及本公众号(iteblog_hadoop) 12、Flink中文文档:http://flink.iteblog.com 13、Carbondata 中文文档 http://carbondata.iteblog.com

你可能感兴趣的:(在shell中如何判断HDFS中的文件目录是否存在)