For-Loop в Linux Bash - изменить путь и имя файла? - PullRequest
0 голосов
/ 23 июня 2019

Я делаю многошаговый рабочий процесс, который вызывает независимое программное обеспечение с каждым шагом. Конечная цель состоит в том, чтобы каждый шаг сохранял соответствующие выходные файлы в уникальный каталог с добавленным именем. Выходные файлы предыдущих шагов часто являются входными файлами для последующих шагов. Обработка всех файлов в одном каталоге, а затем перемещение на основе уникальных идентификаторов неэффективно, поскольку файлы очень велики. Лучше направлять вывод каждого шага непосредственно в его конечное местоположение.

Этот сценарий будет использоваться со многими независимыми наборами данных, поэтому цель состоит в том, чтобы сохранить сценарий в общем расположении и вызвать / запустить сценарий из расположения, зависящего от набора данных. Поэтому пути, используемые в скрипте, должны использовать произвольный язык, например ./ или ../

В настоящее время я пытаюсь переименовать имена входных файлов в цикле for, используя подстановку параметров, одновременно меняя путь. Однако имена файлов не совсем правильные.

Структуры и местоположения имен файлов

1-й цикл:
1.fastq
2.fastq
...
Местоположение: текущий рабочий каталог

Выход 1-го контура:
1_Trimmed.fastq
2_Trimmed.fastq
...
Сохранено в: ../Trimmed

После завершения 1-го цикла: cd ../Trimmed

2-й контурный вход:
1_Trimmed.fastq
2_Trimmed.fastq
...
Местоположение: текущий рабочий каталог

Выход 2-го контура:
1_Mapped.fastq
2_Mapped.Fastq
Расположение: ../Bowtie2

Код

for file in *fastq
do
  java -jar /path/Trimmomatic-0.39/trimmomatic-0.39.jar $file ../Trimmed/${file%%.fastq}"_Trimmed.fastq"
done

cd ../Trimmed

for file in *_Trimmed.fastq
do
  bowtie2 -x $file ../Bowtie2/${file%%_Trimmed.fastq}"_Mapped.sam"
done

выход

В настоящее время файлы попадают в правильный каталог, но называются «Trimmed1_Trimmed.fastq» и «Bowtie21_Mapped.sam». Эти шаги:

../Trimmed/${file%%.fastq}"_Trimmed.fastq"
../Bowtie2/${file%%_Trimmed.fastq}"_Mapped.sam"

сделать так, чтобы слово "Trimmed" или "Bowtie2" было добавлено в начало имени файла, но я намерен указать только путь. Есть ли способ сделать это в цикле?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...