쉘 스크립트에서 하나의 명령에 대해 여러 입력을 지정하는 방법

쉘 스크립트에서 하나의 명령에 대해 여러 입력을 지정하는 방법

샘플당 여러 개의 fastq 파일이 있는데, 모두 한 번에 입력으로 제공되어야 합니다. (모두 하나의 샘플에 속하기 때문에 for 루프처럼 독립적으로 처리하면 안 됩니다. 하나의 샘플에 입력되기 때문에 함께 있어야 합니다. 대하다).

이것은 간단한 예입니다. s1 샘플에는 fastq 파일이 3개만 있습니다.

NanoPlot -t 2 --fastq s1.reads1.fastq.gz s1.reads2.fastq.gz s1.reads3.fastq.g --maxlength 40000 --plots hex dot

이제 s1에 대해 100개가 넘는 fastq 파일이 있다고 가정합니다. 이 파일을 모두 입력으로 사용하도록 명령을 수정하려면 어떻게 해야 합니까?

답변1

NanoPlot따라서 내 제안은 FASTQ 파일 목록을 포함하는 매개변수로 파일 이름을 제공 하고 프로그램에서 그에 따라 목록을 처리하는 것입니다.

NanoPlot -t 2 --fastq fastq_files.list --maxlength 40000 --plots hex dot

내용은 fastq_files.list다음과 같습니다.

s1.reads1.fastq.gz
s1.reads2.fastq.gz 
s1.reads3.fastq.gz
...etc

답변2

이것이 다음에 적용되는 경우 NanoPlot:

NanoPlot -t 2 --fastq s1.reads1.fastq.gz s1.reads2.fastq.gz s1.reads3.fastq.gz --maxlength 40000 --plots hex dot

로 시작하고 끝나는 s1.모든 파일 이름을 전달하려는 .fastq.gz경우 간단한 쉘 glob도 트릭을 수행해야 합니다.

NanoPlot -t 2 --fastq s1.*.fastq.gz --maxlength 40000 --plots hex dot

쉘은 일반적인 사전식 순서로 파일 이름을 정렬하므로 숫자는 1< 10< 11< 2등으로 정렬되므로 이것이 중요하다면 주의하세요.

프로그램을 보고 싶다면하나의파일에 이러한 모든 파일의 데이터가 포함되어 있으면 Bash/ksh/zsh에서 프로세스 대체를 사용하여 cat이 작업을 수행할 수 있습니다.

NanoPlot -t 2 --fastq <(cat s1.*.fastq.gz) --maxlength 40000 --plots hex dot

관련 정보