1

这是我想要做的:

我在文件夹名称 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,依此类推。

另外我将如何将它与 cron 合并?这应该只运行一次......

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

file.001 
file.002 
file.003 

等我也需要提取。

关于第 6 步的说明:

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

例如来自文本文件的文件列表:

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.
4

1 回答 1

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 个文件和最终得到的脚本进行一些测试。

于 2010-08-29T18:49:02.430 回答