这可能是在某个地方解决,但无法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范围内的任意数字。