Linux中判断hdfs文件是否存在
在Linux文件系统中,我们可以使用下面shell脚本判断某个文件是否存在:
# 这里的-f参数判断$file是否存在
if [ ! -f "$file" ]; then
echo "文件不存在!"
fi
但是我们想判断hdfs上某个文件是否存在咋办呢?Hadoop内置提供了判断某个文件是否存在的命令:
在linux文件系统中,我们可以使用下面shell脚本判断:
if [ ! -f "$file" ];then
echo "文件不存在"
fi
同样hadoop内置了提供了判断某个文件是否存在的命令
hadoop fs -test
-d 判断<path>是否是目录
-e 判断<path>是否存在
-f 判断<path>是否是个文件
-s 判断内容是否大于0bytes ,大于0为真
-z 判断内容是否等于0bytes,为0真
从上面的输出可以看出,我们可以使用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
所以,上代码:
hadoop fs -test -e /path/exist
if [ $? -eq 0 ] ;then
echo 'exist'
else
echo 'Error! path is not exist'
fi
除此之外,还可以判断某个文件是否是文件夹、是否是文件、某个文件的大小是否大于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