2013-10-15 5 views
2

방금 ​​명령 줄 사용법을 배우기 시작했습니다. 다행히도 이것은 덤프 문제가 아닙니다.순서대로 파일 연결하기 리눅스 명령

나는 내 디렉토리에 다음 파일이 있습니다

L001_R1_001.fastq 
L002_R2_001.fastq 
L004_R1_001.fastq 
L005_R2_001.fastq 
L001_R2_001.fastq 
L003_R1_001.fastq 
L004_R2_001.fastq 
L006_R1_001.fastq 
L002_R1_001.fastq 
L003_R2_001.fastq 
L005_R1_001.fastq 
L006_R2_001.fastq 

당신은 파일 이름에서 볼 수있는, 그것은 정렬되지 않습니다 R1과 R2 및 L00 후 숫자의 조합입니다.

파일 이름 순서대로 파일을 연결하려면 R1 및 R2 파일을 별도로 지정하십시오. 내가 수동으로 할 경우

, 다음과 같이 표시됩니다

# for R1 files 
cat L001_R1_001.fastq L002_R1_001.fastq L003_R1_001.fastq L004_R1_001.fastq L005_R1_001.fastq L006_R1_001.fastq > R1.fastq 


# for R2 files 
cat L001_R2_001.fastq L002_R2_001.fastq L003_R2_001.fastq L004_R2_001.fastq L005_R2_001.fastq L006_R2_001.fastq > R2.fastq 

당신이 날 내가 다시 사용할 수 나중에 스크립트를 작성하는 데 도움시겠습니까? 감사합니다. ls 이름으로 파일을 정렬하기 때문에

+0

흠으로 sugested로, LC_ALL=C를 사용하여 로케일 설정을 무시하려고, 쉘의'glob' 위해 수행 ? 당신이 다음'고양이 * _R1 _ *. fastq> R1.fastq'를 사용할 수 있습니다 원인 '... – Wrikken

답변

4
cat `ls -- *_R1_*.fastq | sort` >R1.fastq 
cat `ls -- *_R2_*.fastq | sort` >R2.fastq 

| sort는 대부분의 시스템에서 필요하지 않습니다. 파일의 이름은 공백을 포함 할 경우

, 먼저이 작업을 수행 :

IFS=' 
' 
+3

나는 sort'이 – jkshah

+0

종류의 입력 _lines_을 정렬 할 것이다 중복'ls''의 사용을 믿고. 대신 _ls -1_을 사용해보십시오. 게다가 버전 정렬을 수행하는 것이 좋습니다 : ls에 대한 _sort -V_ – devnull

+0

* -1 *은 중복됩니다. ls는 파이프에 쓸 때 한 줄에 하나의 파일 이름을 씁니다. – pts

1

는 와일드 카드 문자 *를 사용해보십시오. 파일 이름이 알파벳순으로 자동 확장됩니다.

cat L*_R1_001.fastq > R1.fastq 
cat L*_R2_001.fastq > R2.fastq 

편집가 : 위의 명령은 정렬을 원하는 제공하지 않습니다

경우 Fredrik Pihl

LC_ALL=C cat L*_R1_001.fastq > R1.fastq 
+0

아마도'LC_ALL = C cat L * _R1_001.fastq> R1.fastq'을 사용하는 힌트 일 것입니다. 그래서 다른 로케일 때문에 재미있는 일이 일어나지 않습니다. –

+0

@FredrikPihl 여러분의 의견에 감사드립니다. 나는 당신의 제안을 ans에 추가했습니다. – jkshah

+0

'*'가 파일 이름을 정렬한다는 보장은 없습니다. 'ls'을 사용하십시오. – pts