Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除除1个最新文件外的所有文件bash_Bash - Fatal编程技术网

删除除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}。如果没有太多的文件。