通过 shell 删除 HDFS 上的文件,其中文件名包含低于给定值的数字
Delete files on HDFS via shell where filename contains number inferior to given value
我已经搜索了其他现有问题但没有成功。
在 spark 作业结束时,我需要通过 sh 脚本进行一些清理。
目标是删除名称中包含低于给定值的数字的所有文件。
例如,让我们考虑这个 HDFS 文件夹结构
myDirectory
myFile_20210315.csv
myFile_20210316.csv
myFile_20210317.csv
我想用参数 20210316 启动 SH 脚本,它只删除 myFile_20210315.csv。
到目前为止,我有这个命令可以隔离文件的数字部分,但我不知道下一步:
hdfs dfs -ls myDirectory/myFile*.csv | awk '{print }' | sed -e s/[^0-9]//g
最终找到了解决方案。下面是脚本。
我调用脚本做 ./myScript.sh 20210315
for f in `hdfs dfs -ls myDirectory/*.csv | awk '{print }'`;
do
echo Processing $f
fileNumberValue=`hdfs dfs -ls $f | awk '{print }' | sed -e s/[^0-9]//g`
if [ $fileNumberValue -lt "" ]; then
echo $fileNumberValue inferior to "" : deleting $f on HDFS
hdfs dfs -rm $f
fi
done
我已经搜索了其他现有问题但没有成功。
在 spark 作业结束时,我需要通过 sh 脚本进行一些清理。 目标是删除名称中包含低于给定值的数字的所有文件。
例如,让我们考虑这个 HDFS 文件夹结构
myDirectory
myFile_20210315.csv
myFile_20210316.csv
myFile_20210317.csv
我想用参数 20210316 启动 SH 脚本,它只删除 myFile_20210315.csv。
到目前为止,我有这个命令可以隔离文件的数字部分,但我不知道下一步:
hdfs dfs -ls myDirectory/myFile*.csv | awk '{print }' | sed -e s/[^0-9]//g
最终找到了解决方案。下面是脚本。
我调用脚本做 ./myScript.sh 20210315
for f in `hdfs dfs -ls myDirectory/*.csv | awk '{print }'`;
do
echo Processing $f
fileNumberValue=`hdfs dfs -ls $f | awk '{print }' | sed -e s/[^0-9]//g`
if [ $fileNumberValue -lt "" ]; then
echo $fileNumberValue inferior to "" : deleting $f on HDFS
hdfs dfs -rm $f
fi
done