删除名称为“更大”的 n 个文件以外的文件?

Fei*_*ila 3 shell-script files

我想创建一个 shell 脚本来删除除最后 n 个文件之外的旧版本文件。换句话说,当我部署一个新版本时,只保留最后 n 个版本。

文件名具有以下格式:

appname_releasenumber_date.tar.gz
Run Code Online (Sandbox Code Playgroud)

也许有一个简单的解决方案可以做到这一点,但我不知道如何做到这一点。

我找到了这个解决方案,在 Linux 上以更简洁的方式删除文件,其中包含日期戳作为文件名的一部分,但我需要先生成一些文件以保持我想要的文件数量。

unx*_*nut 5

我将更改@Salton 的答案以使其更通用:

ls -1 | sort -t_ -n -k2 | head -$((`ls | wc -l`-1)) | xargs rm -rf
Run Code Online (Sandbox Code Playgroud)

这个按版本号排序并完全忽略日期。因此,如果旧版本的日期较新,则旧版本将被删除。