删除具有相似名称、与范围匹配的文件



我有多个名称相似的文件。他们名字的差异只是一个递增的数字。例如 Linux 内核:

rc  linux-image-3.2.0-29-generic           3.2.0-29.46                             Linux kernel image for version 3.2.0 on 64 bit x86 SMP
rc  linux-image-3.2.0-31-generic           3.2.0-31.50                             Linux kernel image for version 3.2.0 on 64 bit x86 SMP
rc  linux-image-3.2.0-32-generic           3.2.0-32.51                             Linux kernel image for version 3.2.0 on 64 bit x86 SMP
rc  linux-image-3.2.0-33-generic           3.2.0-33.52                             Linux kernel image for version 3.2.0 on 64 bit x86 SMP
rc  linux-image-3.2.0-34-generic           3.2.0-34.53                             Linux kernel image for version 3.2.0 on 64 bit x86 SMP
rc  linux-image-3.2.0-35-generic           3.2.0-35.55                             Linux kernel image for version 3.2.0 on 64 bit x86 SMP  
.... and more of them

我想删除其中的大部分。比如说,从 29 到 35。有太多的东西可以使用sudo apt-get purge linux-image-x.x.x.x-generic手动删除。我应该写什么脚本?

您可以根据文件的名称模式删除文件。例如,执行:

rm linux-image-3.2.0-{29..35}-generic

在此之前,为了确保您删除了正确的内容,请执行带有ls命令以查看哪些文件将受到影响。

如果这是您的第一行:

rc  linux-image-3.2.0-01-generic           3.2.0-29.46

这是您的第 40 行:(例如)

rc  linux-image-3.2.0-40-generic           3.2.0-29.46

因此,您可以使用awk删除特定行:

awk -v m=29 -v n=35 'm <= NR && NR <= n {next} {print}' test.txt

相关内容

  • 没有找到相关文章

最新更新