[英]How can I delete directories based on their numeric name value with a shell script?
[英]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.