bash - 获取 HDFS 中最后更新的文件夹

标签 bash shell unix hadoop hdfs

我想要我的一个 HDFS 目录中的最新更新文件夹。我能够在 hdfs 文件系统中获取最新文件,但不确定如何为 HDFS 文件系统执行此操作。我尝试使用 shell 脚本。

最佳答案

使用 Hadoop 2.6,我可以使用以下命令让它工作:

hdfs dfs -ls -R ${DIR} | grep "^d" | sort -k6,7 | tail -1 | tr -s ' ' | cut -d' ' -f8

在哪里,

hdfs dfs -ls -R ${DIR} : 递归地给出所有目录

grep "^d" : 只给出目录

sort -k6,7 : 按修改时间排序

tail -1 : 列出最后修改的目录

tr -s ' ' : 一些格式化

cut -d' ' -f8 : 只给出目录路径

示例:

[user@nodeX]$ hdfs dfs -ls -R /tmp/a 
drwxr-xr-x   - hduser supergroup          0 2017-08-08 03:08 /tmp/a/b
drwxr-xr-x   - hduser supergroup          0 2017-08-08 03:11 /tmp/a/b/c
drwxr-xr-x   - hduser supergroup          0 2017-08-08 03:12 /tmp/a/b/c/CC
-rw-r--r--   3 hduser supergroup          0 2017-08-08 03:12 /tmp/a/b/c/CC/f2.txt
drwxr-xr-x   - hduser supergroup          0 2017-08-08 03:08 /tmp/a/b/c/d
drwxr-xr-x   - hduser supergroup          0 2017-08-08 03:08 /tmp/a/b/c/d/e
-rw-r--r--   3 hduser supergroup          6 2017-08-08 03:10 /tmp/a/b/c/f1.txt

解决方案:

[user@nodeX]$ hdfs dfs -ls -R /tmp/a | grep "^d" | sort -k6,7 | tail -1 | tr -s ' ' | cut -d' ' -f8

/tmp/a/b/c/CC

关于bash - 获取 HDFS 中最后更新的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45564024/

相关文章:

bash - 关联数组默认是局部的

linux - 为什么我的 sed 替换为 & 无法执行?

linux - while循环cp给出部分文件的副本(linux)

linux - linux系统中如何查看系统用户的CPU和内存总使用情况

linux - 按列将分隔文件拆分为更小的文件

git - 如何使用 git 和 git hooks 同步数据库以及如果它不起作用如何调试

linux - Bash 脚本 FS 使用

php - 比较日期数字和 shell 中输入的数字

unix - 为什么 1/1/1970 是 "epoch time"?

linux - 如何用 awk/sed 替换字符串的第二个实例