一行命令删除文件除最后 N 个修订版本之外的所有修订版本

一行命令删除文件除最后 N 个修订版本之外的所有修订版本

什么是 Unix/Linux 单行命令可以让我删除每个文件除最近的 N 个修订版之外的所有内容?

作为遗留资产管理系统的一部分,我有一堆带有修订号的文件:

bar.r7.js
bar.r8.js
bar.r9.js
bar.r10.js
bar.r11.js
foo.r1.js
foo.r2.js
foo.r3.js
foo.r4.js
...

我想保留每个的最后三个,因此在上面的列表中,命令将删除bar.r7.jsbar.r8.jsfoo.r1.js

答案1

for name in foo bar; do
    printf '%s\n' "$name".r*.js | sort -V | head -n -3 | xargs -d '\n' rm -v
done

相关内容