我有一个递归目录结构,其中包含很多 RAR 文件。我一直在使用此unrar
命令将所有包含的文件提取到当前工作目录中:
unrar e -r -o- *.rar
这可以。然而,某些 RAR 文件包含其他 RAR 文件,这些文件是通过上述命令提取的。问题是这些提取的 RAR 文件的内容不会被提取,因为提取的 RAR 不是初始搜索的一部分。
这件事该怎么办呢?我不想删除 RAR 文件的第一部分并进行新的搜索。我对 Bash 不太流利(或者#!/bin/sh -xu
这是脚本的 shebang),但我想我想保存第一个搜索的文件名并在第二个命令中排除它们。 (最大深度是RAR中的RAR。)是否有更优雅的解决方案?
提前谢谢你,维克托。
编辑:
尝试@icarus提出的解决方案:
mkdir unrar
cd unrar
unrar e -r -o- ../*.rar
set -- *.rar
[ -e "$1" ] && unrar e -r -o- *.rar
答案1
使用 shell(或 find)查找 rar 档案。将第一组解压到新目录中,然后解压该目录中的所有组。
#!/bin/bash
shopt -s nullglob globstar
mkdir unrar
cd unrar
for i in ../**/*.rar ; do unrar e -o- "$i" ; done
for i in **/*.rar ; do unrar e -o- "$i" ; done