Bash Script для извлечения разделенных архивных файлов с использованием rar - PullRequest
1 голос
/ 29 августа 2010

Вот что я хочу сделать:

У меня есть тысяча сплит rar архивов на имя папки Archives.Имя файлов 0001.part1.rar 0002.part2.rar 0003.part3.rar и т. Д.

  1. read 0001.part1.rar
  2. создать каталог на основе префиксафайл выше, например 0001
  3. переместить все файлы с одинаковым префиксом в каталог, созданный выше.
  4. Извлечение файлов в этом каталоге
  5. удаление всех RAR-файлов в этом каталоге
  6. Переименование извлеченного файла на основе списка имен из текстового файла.
  7. Разархивируйте переименованный файл с другими аргументами.
  8. Переместите переименованный файл (из шага 6) в новый каталог с именем Done.
  9. Перейдите к файлу 0002.part1.rar, затем выполните шаги 2-8 и т. Д.

Дополнительно, как мне включить его в cron ???Это следует запускать только один раз ...

После извлечения первого набора файлов rar измените его на:

file.001 
file.002 
file.003 

и т. Д.который мне нужно извлечь тоже.

Пояснение на шаге 6:

После извлечения второго набора rar (файл.001, файл.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.

1 Ответ

0 голосов
/ 29 августа 2010

Вы можете написать скрипт оболочки, включающий что-то вроде этого:

# 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 предназначен для запуска одноразовых заданий или запуска в сеансе screen .

Я предлагаю вам выполнить несколько тестов с 1-3 файлами изВаша коллекция и сценарий, с которым вы работаете, перед началом всей работы.

...