如何使用命令行删除分割的 RAR 存档文件的所有部分?

如何使用命令行删除分割的 RAR 存档文件的所有部分?

我通常使用某种基于 Debian 的 Linux 发行版;Debian 7.8 或 Linux Mint 17。我有一个拆分 RAR 文件,如下所示:

filename.rar
filename.r01
filename.r02
filename.r03
etc ...

dtrx使用或提取档案后unrar,我想使用 删除拆分档案的所有部分文件,最好是使用 单行。

目前我确实这样做了rm filename.r*,通常效果很好,但是如果文件名称类似,它也rabbid.ranger.robot.r01可以删除提取的目录。rabbid.ranger.robot

所以我正在寻找一些更强大的东西。

也会接受短剧本。

答案1

根据您拥有的文件数量,.r0*您可以将 替换*?这将删除包含 .r0 和 1 个其他字符的文件。因此它将删除rabbid.ranger.robot.r01但不会rabbid.ranger.robot.r010 一般情况下我会这样使用它:

rm filename.r??

答案2

假设你有一个分割的 RAR,其部分编号最多为 12(filename.r12即你的最后一个文件),并且你想格外小心,不要删除任何其他文件。假设狂欢是你的壳并且您使用的是版本 4 或更高版本bash --version检查),您可以轻松创建一个明确的文件列表括号扩展

rm filename.rar filename.r{01..12}

这将删除仅有的这些文件:即使名为filename.rtf(或filename.r13)的文件也将被保留。根据文件夹中有(或可能有)的其他文件,这可能比.r??Devan 建议的通常相当好的方法

括号扩展(包括数字范围)是多个 shell 的一项非常古老的功能。但在版本 4 之前,bash 不支持零填充(即,您需要像 这样的名称filename.r05,而不是filename.r5)。

您可以首先检查括号表达式将扩展为哪些文件名:

$ echo filename.rar filename.r{01..12}
filename.rar filename.r01 filename.r02 filename.r03 filename.r04 filename.r05 filename.r06 filename.r07 filename.r08 filename.r09 filename.r10 filename.r11 filename.r12

*(您也可以通过这种方式使用或检查表达式?- 只要记住它扩展为什么取决于您运行命令时所在的文件夹。)

答案3

您可以使用find命令;来自工作目录:

find . -type f -name "filename.*" -exec rm  {} \;

这仅搜索匹配的文件,目录被排除。最好先用 测试命令,ls而不是rm确保它返回您想要的结果。

find . -type f -name "filename.*" -exec ls {} \;

相关内容