什么是 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.js
、bar.r8.js
和foo.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