Bash - 从grep输出中删除最后一个单词

时间:2017-06-30 06:47:29

标签: bash shell

我正在使用grep和awk

来搜索某些文件夹
ls $HOME/.../ | grep ...| gawk -F "-" '{print $3}'

这会产生3个文件夹

rp1 rp2 rp3

rp3是最新的。我想从该变量中删除rp3并使用rm -rf

逐个删除旧的变量

1 个答案:

答案 0 :(得分:1)

不需要lsfindawk,解析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