删除除1个最新文件外的所有文件bash
我有一个包含如下文件的目录:删除除1个最新文件外的所有文件bash,bash,Bash,我有一个包含如下文件的目录: dump_2014_12_21_1001.7z dump_2014_12_21_1122.7z dump_2014_12_21_1207.7z dump_2014_12_21_1334.7z 文件的数量可能不同 我需要编写bash脚本来删除除最新文件以外的所有文件?请不要使用num=$ls/tmp/| wc-l num=$num-1 ls-lt/tmp/| tail-n$num;你发布的ls | sort | uniq-u | xargs rm 您的文件名非常全局
dump_2014_12_21_1001.7z
dump_2014_12_21_1122.7z
dump_2014_12_21_1207.7z
dump_2014_12_21_1334.7z
文件的数量可能不同
我需要编写bash脚本来删除除最新文件以外的所有文件?请不要使用num=$ls/tmp/| wc-l num=$num-1 ls-lt/tmp/| tail-n$num;你发布的ls | sort | uniq-u | xargs rm
您的文件名非常全局友好,无需再次排序。
这里有一个更好的解决方案:
unset oldfile
for file in *.7z; do
[[ $oldfile ]] && rm "$oldfile"
oldfile=$file
done
num=$ls/tmp/| wc-l num=$num-1 ls-lt/tmp/| tail-n$num;ls | sort | uniq-u | xargs rmOr:shopt-s nullglob;文件=*.7z${files[@]}>1&&rm-${files[@]:1}。如果没有太多的文件。