我通常使用某种基于 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 {} \;