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

时间:2014-02-18 12:33:45

标签: linux bash shell

我有多个同名的文件。名称的差异只是一个递增的数字。例如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手动删除太多了。我应该写什么脚本?

2 个答案:

答案 0 :(得分:1)

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

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

之前,为确保删除正确的内容,请执行ls命令以查看哪些文件会受到影响。

答案 1 :(得分:0)

如果这是你的第一行:

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