[英]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逐一刪除較舊的變量
不需要ls
, find
, awk
,解析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.