使用shell脚本查找HDFS中是否存在文件

时间:2017-05-10 18:39:10

标签: linux bash shell hadoop hdfs

我有一个shell script如下。此脚本打印位于HDFS

中的文件的路径
#!/bin/bash

TIMESTAMP=`date "+%Y-%m-%d"`
path=/user/$USER/logs/${TIMESTAMP}.fail_log
path1=/user/$USER/logs/`date -d "-1 days" '+%Y-%m-%d'`.fail_log

echo filePath=$path
echo filePath1=$path1

在脚本中,paths提供的是hdfs个位置

在这个脚本中我得到了文件路径。

现在我想知道HDFS中文件是否确实存在。

如果文件存在,则只打印文件路径,否则不执行任何操作。

我该怎么做?

2 个答案:

答案 0 :(得分:14)

您可以尝试使用-test选项来实现相同目标。

e.g。

hdfs dfs -test -[ezd] HDFS_PATH
  • -e:检查文件或目录是否存在
  • -z:检查文件或目录是否为空
  • -d:检查给定的HDFS_PATH是否为目录。

示例:

if hdfs dfs -test -e $HDFS_PATH; then
    echo "[$HDFS_PATH] exists on HDFS"
    hdfs dfs -ls $HDFS_PATH
fi

参考:https://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-common/FileSystemShell.html#test

答案 1 :(得分:0)

{ ...; }