簡體   English   中英

根據傳遞的值刪除 hdfs 中的目錄

[英]delete directories in hdfs based on the value passed

我在HDFS中有一些如下目錄。

/user/$USER/test/date_loaded=2020-07-07/seq=1
/user/$USER/test/date_loaded=2020-07-07/seq=2
/user/$USER/test/date_loaded=2020-07-08/seq=1
/user/$USER/test/date_loaded=2020-07-08/seq=2
/user/$USER/test/date_loaded=2020-07-09/seq=1

我正在嘗試刪除 date_loaded <= '2020-07-08' 的目錄

我確實喜歡下面

hdfs dfs -rm -R user/$USER/test/date_loaded=2020-07-07
hdfs dfs -rm -R user/$USER/test/date_loaded=2020-07-08

如您所見,我曾經使用hdfs cli 語句來實現我想要的。

我想根據我傳遞的 date_loaded 值使用命令或腳本一次性刪除目錄。

例如。

如果我將date_loaded值作為2020-07-08傳遞給腳本,則應刪除以下目錄

/user/$USER/test/date_loaded=2020-07-07/seq=1
/user/$USER/test/date_loaded=2020-07-07/seq=2
/user/$USER/test/date_loaded=2020-07-08/seq=1
/user/$USER/test/date_loaded=2020-07-08/seq=2

我怎樣才能達到我想要的

在普通 bash 中:

#!/bin/bash

prefix=/user/$USER/test/date_loaded=
cutoffdate=2020-07-08

declare -A to_be_removed
shopt -s nullglob
for dir in "$prefix"[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]/; do
    [[ ${dir#"$prefix"} > $cutoffdate/ ]] && break
    to_be_removed[$dir]=1
done

echo rm -rf -- "${!to_be_removed[@]}"

變量USER必須在使用前設置。 在確保它按預期工作后,刪除echo並用你的替換rm命令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM