gpt4 book ai didi

bash - 如何使用bash在HDFS中的一行上列出带有元数据的文件?

转载 作者:行者123 更新时间:2023-12-02 19:46:36 24 4
gpt4 key购买 nike

我正在编写一个bash脚本,该脚本扫描HDFS并对输出进行处理。

通过以下操作很容易获取文件名:

    for line in $(hdfs dfs -ls -t -r -C -R $HDFS_CLEANING_STG); do
echo $line
done

输出:
/dir
/dir/file1
/dir/file2

但是,它将删除文件大小,日期,权限等。

使用相同的方法,但没有 -C标志,它提供元数据,但不只显示一行:

输出示例:
-rw-rw-r--+
3
hdfs
hdfs
34448169
2020-05-04
11:36
/dir/file

我想获取这些信息,但是具有以下输出(例如“normal” ls):
-rw-rw-r--+ 3 hdfs hdfs 34448169 2020-05-04 11:36 /dir/file

我该如何实现?

最佳答案

问题出在for循环中。当您执行for line in $(hdfs dfs -ls -t -r -C -R $HDFS_CLEANING_STG);时,它会遍历每个单词,而不是遍历每一行。因此,每次遇到空白时,line的值都会随您刚读过的单词而变化。

一种简单的解决方法是这样的:

for line in "$(hdfs dfs -ls -t -r -C -R $HDFS_CLEANING_STG)"; do
echo "$line"
done

或像这样:
hdfs dfs -ls -t -r -C -R $HDFS_CLEANING_STG | while read line; do
echo "$line"
done

关于bash - 如何使用bash在HDFS中的一行上列出带有元数据的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61799114/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com