我正在使用grep和awk
来搜索某些文件夹ls $HOME/.../ | grep ...| gawk -F "-" '{print $3}'
这会产生3个文件夹
rp1 rp2 rp3
rp3是最新的。我想从该变量中删除rp3并使用rm -rf
逐个删除旧的变量答案 0 :(得分:1)
不需要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[@]}"
如果有多个数字,则last是最后修改的数字
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