수백 개의 폴더가 있는데 일부는 tar.gz 파일이 있고 일부는 bam 파일이 있습니다. tar.gz 파일을 다른 디렉토리에 추출하고 싶었습니다. tar.gz 파일이 있는 폴더는 아래와 같습니다.
d1017f74-3a39-4427-af57-273e34247b49
├──--- UNCID_2207021.7b9569bc-f513-4b64-9a7c-7bb53b9be79b.110801_UNC12-SN629_0115_BD0DVEABXX_3_ACAGTG.tar.gz
5e2d5c52-596f-49bc-967c-42129abbacbf
├──--- UNCID_2208720.71b58051-3bf8-4dfb-a431-c8aceab7c799.110608_UNC13-SN749_0073_BD0CV8ABXX_2.tar.gz
2ef74f93-5da2-454c-aca2-d86c289eacb8
├──--- UNCID_2206802.25be50e7-7705-492d-a44a-0e40180d10c8.110901_UNC12-SN629_0127_BC025UABXX_1_CTTGTA.tar.gz
e01ca3e0-beb0-46b7-bb7c-f5b16f966918
├──--- UNCID_2521679.d817dcee-1322-4949-a6e9-138447e6fc56.140417_UNC13-SN749_0343_BC41HBACXX_5_CTTGTA.tar.gz
992a7083-28ce-4857-898e-9d4b4fbf2fa1
├──--- UNCID_2319278.bf92b8cc-9a5c-4e96-917c-c264fe588f8d.131118_UNC12-SN629_0336_AC31D0ACXX_5_ACTTGA.tar.gz
tar.gz 파일을 대상 디렉토리로 추출하기 위해 다음 명령을 사용했습니다.
find /path/to/directory -name '*.tar.gz' -execdir tar -C /path/to/targetdirectory -xzvf '{}' \;
이 명령은 아래와 같은 이름을 가진 일부 tar.gz 파일에 대한 출력 fastq 파일을 제공합니다.
110801_UNC12-SN629_0115_BD0DVEABXX.3_1.fastq
110801_UNC12-SN629_0115_BD0DVEABXX.3_2.fastq
110608_UNC13-SN749_0073_BD0CV8ABXX.2_1.fastq
110608_UNC13-SN749_0073_BD0CV8ABXX.2_2.fastq
110901_UNC12-SN629_0127_BC025UABXX.1_1.fastq
110901_UNC12-SN629_0127_BC025UABXX.1_2.fastq
이것은 내가 원하는 것이 아닙니다. 폴더 이름, tar.gz 파일 이름, 샘플 이름이 다음과 같은 텍스트 파일이 있습니다.
FolderNames Tar.gz files SampleNames
d1017f74-3a39-4427-af57-273e34247b49 UNCID_2207021.7b9569bc-f513-4b64-9a7c-7bb53b9be79b.110801_UNC12-SN629_0115_BD0DVEABXX_3_ACAGTG.tar.gz S-E9-A1NA-11A
5e2d5c52-596f-49bc-967c-42129abbacbf UNCID_2208720.71b58051-3bf8-4dfb-a431-c8aceab7c799.110608_UNC13-SN749_0073_BD0CV8ABXX_2.tar.gz S-AO-A12H-01A
2ef74f93-5da2-454c-aca2-d86c289eacb8 UNCID_2206802.25be50e7-7705-492d-a44a-0e40180d10c8.110901_UNC12-SN629_0127_BC025UABXX_1_CTTGTA.tar.gz S-AC-A23E-01A
e01ca3e0-beb0-46b7-bb7c-f5b16f966918 UNCID_2521679.d817dcee-1322-4949-a6e9-138447e6fc56.140417_UNC13-SN749_0343_BC41HBACXX_5_CTTGTA.tar.gz S-C8-A8HR-01A
992a7083-28ce-4857-898e-9d4b4fbf2fa1 UNCID_2319278.bf92b8cc-9a5c-4e96-917c-c264fe588f8d.131118_UNC12-SN629_0336_AC31D0ACXX_5_ACTTGA.tar.gz S-A8-A08A-01A
출력은 텍스트 파일에서 샘플 이름을 가져와야 하며 다음과 같아야 합니다.
S-E9-A1NA-11A.3_1.fastq
S-E9-A1NA-11A.3_2.fastq
S-AO-A12H-01A.2_1.fastq
S-AO-A12H-01A.2_2.fastq
S-AC-A23E-01A.1_1.fastq
S-AC-A23E-01A.1_2.fastq
S-C8-A8HR-01A.5_1.fastq
S-C8-A8HR-01A.5_2.fastq
S-A8-A08A-01A.5_1.fastq
S-A8-A08A-01A.5_2.fastq
답변1
그럼 이런 것도 있나요?
while read -r folder tarfile sample; do
find /path/to/directory/"$folder" -name "$tarfile" -execdir sh -c '
tar -C /path/to/targetdirectory -xzvf "$0";
for f in *.fastq; do
mv "$f" "$1.${f#*.}";
done' {} "$sample" \;
done <Foldernames
나는 당신이 find
여기에 필요한지 전혀 확신하지 못하지만 당신의 설명은 정확히 무엇이고 그 하위 디렉토리가 무엇을 가리키는지 밝히지 않으므로 /path/to
당신이 거기에서 무엇을 하고 있는지(또는 그렇지 않은 경우 그것을 멈추는 방법)를 알고 있다고 가정합니다. .