2014-12-22 73 views
-4

我有目錄與文件一樣:刪除所有,但1個最新的文件慶典

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腳本來刪除除最新之外的所有文件嗎?

+0

NUM = $(LS/TMP/| WC -1) NUM = $((NUM-1)) (LS -lt/TMP/|尾-n $ NUM ; ls)| sort | uniq -u | xargs rm – user3301252

回答

1

請不要使用您發佈的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 
+0

或者:'shopt -s nullglob; files =(* .7z); (($ {#files [@]}> 1))&& rm - 「$ {files [@]:1}」'。如果沒有太多的文件。 –