Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 删除具有相似名称、匹配范围的文件_Linux_Bash_Shell - Fatal编程技术网

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

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