2017-07-23 46 views
-3

我是新来的工作在shell中,可以使用unrar命令来提取单个存档,但我期待着做更多的事情。让我解释。档案提取脚本

例:

/ParentFolder/ChildFolder1/xyz.rar 

/ParentFolder/ChildFolder2/abc.rar 

/ParentFolder/ChildFolder3/rty.rar 

/ParentFolder/ChildFolder4/wqe.rar 

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

奖励:每个孩子文件夹中有列出像

archivename.r01 

archivename.r02 

archivename.rar 

如果它可以删除提取后整个归档结构将是惊人的档案。

希望我解释得很好。提前致谢!

+5

您应该先尝试一些事情,并解释您遇到的问题,否则这个问题听起来像是某人要求进行免费脚本开发的请求。 –

+0

你的“输入”例子非常好(即'/ParentFolder/ChildFolder1/xyz.rar .....')。编辑你的Q以显示你想要的最终输出结果,然后我们不会猜测你的意思。祝你好运。 – shellter

回答

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扩展名的文件,并通过AWK所以找了所有这些文件,而无需RAR的扩展和管道的结果,使用系统函数用mv重命名文件。

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

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

+0

非常感谢!你的第一个我只需要在unrar旁边添加一个“x”并完成它的工作! –