fsw*_*ngs 7 linux debian command-line archiving
我通常使用某种基于 Debian 的 Linux 发行版;Debian 7.8 或 Linux Mint 17。我有一个这样的拆分 RAR 文件:
filename.rar
filename.r01
filename.r02
filename.r03
etc ...
Run Code Online (Sandbox Code Playgroud)
使用dtrx
或提取存档后unrar
,我想删除拆分存档的所有部分文件,最好是一行。
目前我这样做rm filename.r*
,通常效果很好,但是如果文件的名称与rabbid.ranger.robot.r01
它类似,也可以删除提取的目录rabbid.ranger.robot
。
所以我正在寻找更强大的东西。
也将接受一个简短的脚本。
小智 10
假设您有一个分割的 RAR,其零件编号最多为 12(即,filename.r12
作为您的最后一个文件),并且您希望格外小心,不要删除任何其他文件。假设bash是您的 shell并且您使用的是版本 4 或更高版本(bash --version
以进行检查),您可以使用大括号扩展轻松创建显式文件列表:
rm filename.rar filename.r{01..12}
Run Code Online (Sandbox Code Playgroud)
这将仅删除那些文件:即使是名为filename.rtf
(或filename.r13
) 的文件也将被保留。根据您在文件夹中拥有(或可能拥有)的其他文件,这可能比Devan 建议的通常非常好的.r??
方法更可取,也可能不更可取。
括号扩展,包括数字范围,是几个 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
Run Code Online (Sandbox Code Playgroud)
(您也可以使用*
或?
这种方式检查表达式——请记住,它扩展到的内容取决于您在运行命令时所在的文件夹。)
小智 6
根据.r0*
您拥有的文件数量,您可以*
用 a替换,?
这将删除具有 .r0 和 1 个其他字符的文件。所以它会删除rabbid.ranger.robot.r01
但不是rabbid.ranger.robot.r010
一般我会这样使用它:
rm filename.r??
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3803 次 |
最近记录: |