根据模式删除文件

这可能是在某个地方解决,但无法find符合我的要求的命令。

所以基本上可以说有51个文件以aaa.log aaa.log.1 aaa.log.2开头。 aaa.log.4 aaa.log.40 aaa.log.41。 。 aaa.log.50

现在,我打算将aaa.log.40文件删除到aaa.log.50。

如果我运行rm -f aaa.log.4 *,它将删除包括aaa.log.4在内的所有内容,我应该使用哪些调整,以便只删除aaa.log.40到50而不是aaa.log.4?

Ubuntu中的默认shell是bash 。 在bash (也可能是其他许多shell)中,你可以这样做:

 rm -f aaa.log.{40..50} 

扩展{40..50}扩展到40到50之间的数字范围,并自动使该单词的其余部分与每个扩展数字重复。 它不会validation文件名是否存在,所以可能会导致rm被赋予不存在文件的名称。 然而,既然你显然想要使用强制选项,这不是一个问题。 当你键入rm -f它不会打印任何关于丢失文件的错误信息。

如果你不熟悉这个扩展,那么在前面用echo来testing命令通常是个好主意。 那么你可以看到这些论据展开到:

 echo rm -f aaa.log.{40..50} 

如果你使用扩展globbing的zsh ,你可以使用rm aaa.<40-50>

除了@ kasperd的回答,以下可能会有所帮助:如果数字不是连续的(例如20-30和50-60),可以执行以下操作:

 rm aaa.log.{2,3,5,6}[0-9] 

这将删除尾部以2,3,5或6结尾的所有文件,然后是0-9范围内的任意数字。