我正在处理大量受密码保护的 .rar 文件,需要重新打包才能删除密码。 (密码是已知的。)我想知道是否有一个脚本可以批量/递归地提取和重新打包它们,同时保持与之前相同的名称和目录结构。
答案1
我会将此任务分为两个部分,第一个部分是您需要一个脚本rerar
来提取和构建 rar 并将 rar 的名称作为参数:
#!/bin/bash
R="$PWD"/"$1" # if realpath is available you can use R=$(realpath "$1")
tmpdir=$(mktemp -d --suff rerar)
pushd "$tmpdir"
# extract preserving directory structure of the archive
# replace YOUR_PASS_WORD in the next line, with no space after "-p"!
unrar x -pYOUR_PASS_WORD "$R"
# backup the rar file, optional
mv "$R" "$R".org
# re-create recursively going over the files here
rar a -r "$R" .
popd
rm -rf "$tmpdir"
现在您只需在所有涉及的 rar 文件上运行此命令,例如使用find
find . -name "*.rar" -exec ./rerar {} \;
它不如调用具有多个参数的脚本那么有效,但这里耗时的操作是重新创建 rar 存档,这就是我选择简单解决方案的原因。