Обрабатывать несколько файлов один за другим динамически в рабочем процессе с использованием косвенного файлового метода - PullRequest
0 голосов
/ 04 августа 2020

В моем рабочем процессе используются 3 косвенных файла. Непрямые файлы могут иметь одно или несколько имен файлов. Скажем, все 3 косвенных файла имеют по 2 имени файла.

Indirect_file1 has (file1,file2)
Indirect_file2 has (filea,fileb)
Indirect_file3 has (filex,filey)

Мой рабочий процесс должен выполняться последовательно.

First  sequence (file1,filea,filex) 
Second sequence (file2,fileb,filey)

мы находимся в среде Linux, поэтому я думаю, что это может выполняется с помощью сценария оболочки

Любые указатели будут оценены.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 16 августа 2020

Возможно, вы захотите сначала создать небольшие рабочие пакеты перед обработкой. Когда рабочий процесс занимает много времени, легче (повторно) запустить новые процессы. Начать можно примерно так:

# Step 1, move the current set to temporary folder
combine_dir=/tmp/combine
mkdir "${combine_dir}"
mv Indirect_file1 "${combine_dir}"
mv Indirect_file2 "${combine_dir}"
mv Indirect_file3 "${combine_dir}"
# Step 2, construct work packages in other tmp dir
workload_dir=/tmp/workload
mkdir "${workload_dir}"
for file in Indirect_file1 Indirect_file2 Indirect_file3; do
   loadnr=1
   for work in $(grep -Eo '[^(,)]*' "${file}"); do
      echo "${work}" >> ${workload_dir}/sequence${loadnr}
      ((loadnr++))
   done
done
# The sequenceXXX files have been generated with one file on each line.
# When you must have it like (file1,filea,filex), change above loop.
# Now files are ready to be processed. Move them to some dir where files will be handled.
# Please cleanup temporary files
0 голосов
/ 06 августа 2020

Это должно работать -

  1. в информационном сеансе, измените тип ввода на «Команда»
  2. в информационном сеансе, измените тип команды на «Список файлов для создания команд»
  3. для первой команды задайте команду вида «cut -d», «file -f1», если ваш разделитель - запятая.
  4. для второй команды установите команду вида «cut -d», «файл» -f2 ', если ваш разделитель - запятая.
...