我有多个名称相似的文件。他们名字的差异只是一个递增的数字。例如 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