存档提取脚本

时间:2017-07-23 18:57:00

标签: bash shell archive rar unrar

我刚接触shell工作,可以使用unrar命令提取单个存档,但我希望能做更多的工作。让我解释一下。

例如:

/ParentFolder/ChildFolder1/xyz.rar

/ParentFolder/ChildFolder2/abc.rar

/ParentFolder/ChildFolder3/rty.rar

/ParentFolder/ChildFolder4/wqe.rar

每个子文件夹都有不同的名称,每个名称包含不同名称的档案。我想构建一个脚本,它将提取每个子文件夹中的存档,并将提取的文件重命名为与该文件夹相同的名称。

BONUS:每个子文件夹都有列出的文件,如

archivename.r01

archivename.r02

archivename.rar

如果可以在提取后删除整个存档结构,那将是令人惊叹的。

希望我能够很好地解释这一点。提前致谢!

1 个答案:

答案 0 :(得分:0)

find /ParentFolder -name "*.rar" -exec unrar '{}' \;

在目录结构和unrar中查找所有存档文件。

find /ParentFolder ! -name "*.rar" | awk -F \/ '{ split($4,fle,".");system("mv "$0" "$2"/"$3"/"$3"."fle[2]) }'

假设目录结构中已经没有其他文件,则未归档文件将不是具有rar扩展名的文件,因此查找所有那些没有rar作为扩展名的文件,并使用系统函数将结果通过awk传递给awk用mv。

重命名文件
find /ParentFolder -name "*.rar" -exec rm -f '{}' \;

最后对所有rar文件运行find命令并运行rm -f命令将其删除。