Linux 删除具有相似名称、匹配范围的文件
我有多个同名文件。他们名字的不同只是一个递增的数字。例如linux内核:Linux 删除具有相似名称、匹配范围的文件,linux,bash,shell,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
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-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行:(例如)
因此,您可以使用awk
删除特定行:
awk -v m=29 -v n=35 'm <= NR && NR <= n {next} {print}' test.txt
awk-vm=29-vn=35'm到目前为止你都试了些什么?您熟悉哪些工具?@Bex仅手动删除1乘1。我更新了问题。在你提问之前,请尝试做一些你自己的研究。例如,看看find
。我有一个疑问:您发布的文本是不同文件的列表还是文件中的某些文本?另外,您要删除的文件的模式是什么?在我的示例中,我多次说file
:)我通过运行dpkg--list | grep linux image
获得了上述输出。所以这里没有文本行+1,但这是一个文件的内容..不是文件,我想他想删除这些行,但是有一些缺失的数字,例如31在29之后,缺失30会出现错误。您可以使用:rm linux-image-3.2.0-{29..35}-generic 2>/dev/null
@leemour尽管有错误,它应该正确删除。如果您不想看到它,只需重定向到/dev/null
。。。oops,MortezaLSC刚刚说过:)我使用的是sudo apt get purge
,所以配置文件会随内核一起删除。不幸的是,它没有删除文件。谢谢,但我想问一下文件名。
awk -v m=29 -v n=35 'm <= NR && NR <= n {next} {print}' test.txt