现在有3条不同的绝对路径,循环遍历这三条路径,执行 hdfs dfs -ls 命令 shell实现
时间: 2024-10-27 08:02:45 浏览: 7
在Hadoop分布式文件系统(HDFS)环境中,如果你想要通过shell脚本循环遍历并执行`hdfs dfs -ls`命令来列出给定路径下的内容,你可以创建一个bash脚本,如下所示:
```bash
#!/bin/bash
# 定义要遍历的三个绝对路径
paths=("path1" "path2" "path3")
# 使用for循环遍历每个路径
for path in "${paths[@]}"
do
# 添加hdfs前缀和ls命令
command="hdfs dfs -ls $path"
# 执行命令,并将输出追加到日志文件(这里假设是log.txt)
echo "Executing command for path: $path"
$command >> log.txt
# 检查是否成功执行,可以根据实际情况添加错误处理
if [ $? -eq 0 ]
then
echo "Command executed successfully for $path"
else
echo "Error executing command for $path"
fi
done
相关问题
shell hdfs循环
循环是在编程中常用的一种结构,可以重复执行一段代码块。在Shell脚本中,可以使用循环来处理HDFS中的文件或目录。
下面是一个示例,展示了如何使用Shell脚本中的循环来遍历HDFS中的文件或目录:
```shell
#!/bin/sh
# 遍历HDFS中的文件
hdfs dfs -ls /path/to/files | while read -r line; do
filename=$(echo $line | awk '{print $NF}')
echo "处理文件: $filename"
# 在这里可以添加具体的文件处理逻辑
done
# 遍历HDFS中的目录
hdfs dfs -ls /path/to/directories | grep '^d' | while read -r line; do
dirname=$(echo $line | awk '{print $NF}')
echo "处理目录: $dirname"
# 在这里可以添加具体的目录处理逻辑
done
```
上述示例中,`hdfs dfs -ls`命令用于列出HDFS中的文件或目录。通过管道和`while`循环,可以逐行读取输出,并对每个文件或目录进行处理。在循环体内,可以根据需要添加具体的文件或目录处理逻辑。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [【Shell-HDFS】使用Shell脚本判断HDFS文件、目录是否存在](https://blog.csdn.net/weixin_53543905/article/details/130237460)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
编写一个shell脚本,计算当前hdfs目录的总存储内存大小
以下是一个用于计算当前HDFS目录总存储内存大小的shell脚本:
```shell
#!/bin/bash
# 获取当前HDFS目录下的所有文件和目录
hdfs_files=$(hdfs dfs -ls -R /your/hdfs/path | awk '{print $NF}')
# 初始化总内存大小为0
total_size=0
# 循环遍历每个文件和目录
for file in $hdfs_files
do
# 获取文件或目录的大小
size=$(hdfs dfs -du -s $file | awk '{print $1}')
# 如果是文件,则累加到总内存大小中
if [[ $size =~ ^[0-9]+$ ]]; then
total_size=$((total_size + size))
fi
done
# 打印总内存大小(以字节为单位)
echo "Total storage memory size in current HDFS directory: $total_size bytes"
```
请将`/your/hdfs/path`替换为您要计算总存储内存大小的HDFS目录的路径。您可以将脚本保存为`calculate_hdfs_memory.sh`,然后在终端上运行`bash calculate_hdfs_memory.sh`来执行脚本。
请注意,此脚本假设您已正确配置Hadoop和HDFS,并且可以通过`hdfs dfs`命令访问HDFS。
阅读全文