Bash脚本使用rar提取拆分的存档文件

时间:2010-08-29 18:30:38

标签: bash unix split rar

这就是我想要做的事情:

我在文件夹名称Archives上有数千个拆分rar存档。 文件名0001.part1.rar 0002.part2.rar 0003.part3.rar等。

  1. 阅读0001.part1.rar
  2. 根据上述文件的前缀创建目录,例如0001
  3. 移动上面创建的目录中具有相同前缀的所有文件。
  4. 解压缩该目录中的文件
  5. 删除该目录中的所有rar文件
  6. 根据文本文件中的名称列表重命名提取的文件。
  7. 使用不同的参数Rar重命名的文件。
  8. 将重命名的文件(从步骤6)移动到名为Done的新目录。
  9. 继续执行文件0002.part1.rar然后执行步骤2-8,依此类推。
  10. 另外我如何将它与cron合并? 这应该只运行一次......

    提取第一组rar的文件后,改为:

    file.001 
    file.002 
    file.003 
    

    等。我需要提取它。

    第6步澄清

    提取第二组rar后(file.001,file.002等) 我想根据文本文件中的名称列表重命名它。

    e.g。文本文件中的文件列表:

    0001 - GB Funds.DAT
    0002 - US Bonds.DAT
    0003 - SG Securities.DAT
    0004 - LU Credits.DAT
    

    第7步澄清

    After renaming the file I want to move it on a new folder called "Done"
    

    第9步澄清

    Go back to the main folder with all the other archives 
    and continue extracting the next set of archives and 
    do the same steps from 1 to 8.
    

1 个答案:

答案 0 :(得分:0)

您可以编写包含以下内容的shell脚本:

# foo.sh
set -e
set -u

for i in `find -max-depth 1 -type f -name '*.rar' | sed 's/\.part*\.rar$//' | sort -u`; do
    mkdir $i
    mv $i.part*rar $i
    cd $i
    unrar x $i.part1.rar
    DST=`grep $i ../rename.txt | sed 's/^[0-9]\+ - //'`
    mv $i "$DST"
    # and so on, rar it together again, move it done directory etc.
    cd ..
done

然后通过:

运行它
bash foo.sh

你必须澄清6./8./9。

我不知道你为什么要通过cron运行它,因为你只想运行一次。 at 旨在运行一次性作业,或在屏幕会话中运行。

我建议您在开始整个工作之前,使用您收藏的1-3个文件和最终的脚本进行一些测试。