簡體   English   中英

Bash-從grep輸出中刪除最后一個單詞

[英]Bash - Remove last word from grep output

我正在使用grep和awk grep某些文件夾

ls $HOME/.../ | grep ...| gawk -F "-" '{print $3}'

這將產生3個文件夾

rp1 rp2 rp3

rp3是最新的。 我想從該變量中刪除rp3並使用rm -rf逐一刪除較舊的變量

不需要lsfindawk ,解析ls輸出是不安全的。

假設只有一位,最后一位更大

array=( $HOME/.../*-rp[0-9] )

last_file=${array[-1]}

# remove last element of array
unset array[-1]

echo "${array[@]}"

rm "${array[@]}"

如果有多個數字,並且最后一個是最后修改的

shopt -s extglob

array=( $HOME/.../*-rp+([0-9]) )
last_modified_timestamp=0
for ((i=0;i<${#array[@]};i+=1)); do
    modified_timestamp=$(stat -c %Y "${array[i]}")
    if (( modified_timestamp > last_modified_timestamp )); then
        last_modified_timestamp=$modified_timestamp
        last_index=$i
    fi
done

unset array[$last_index]



# if the keys are important see following
declare -p array
array=( "${array[@]}" )
declare -p array

暫無
暫無

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

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