Extraiga los archivos tar.gz en un directorio con un nombre base diferente según su coincidencia en el archivo de texto

Extraiga los archivos tar.gz en un directorio con un nombre base diferente según su coincidencia en el archivo de texto

Tengo cientos de carpetas, algunas con archivos tar.gz y otras con archivos bam. Sólo quería extraer archivos tar.gz en un directorio diferente. Las carpetas con archivos tar.gz se ven como se mencionan a continuación:

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

Para extraer archivos tar.gz a un directorio de destino, he utilizado el siguiente comando:

find /path/to/directory -name '*.tar.gz' -execdir tar -C /path/to/targetdirectory -xzvf '{}' \;

Este comando proporciona archivos fastq de salida para algunos archivos tar.gz con nombres como los siguientes:

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

Esto no es lo que quiero. Hay un archivo de texto con nombres de carpetas, nombres de archivos tar.gz, nombres de muestra como los siguientes:

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

La salida debería obtener el nombre de muestra del archivo de texto y debería verse como a continuación:

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

Respuesta1

¿Algo como esto entonces?

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

No estoy del todo seguro de que necesite findaquí, pero su exposición no revela exactamente a qué /path/tose refieren sus subdirectorios, por lo que supongo que sabe lo que está haciendo allí (o cómo dejar de hacerlo si no lo sabe). .

información relacionada