Tengo un archivo zip que contiene una jerarquía de directorios de archivos. Quiero usar el comando descomprimir de Linux para extraer solo el subconjunto de estos archivos que tienen una cadena particular en algún lugar de la ruta del directorio que conduce al archivo.
Por ejemplo, supongamos que el archivo foo.zip contiene estos archivos:
a/1.txt
acme/2.txt
a/acme/b/3.txt
a/b/acmenet/c/4.txt
a/b/c/5.txt
a/acme/d/6.php
El comando de Linux "unzip foo.zip *.txt" extraerá los 5 archivos "txt".
¿Cómo se puede modificar este comando de Linux para que solo extraiga los 3 archivos "txt" que tienen la cadena "acme" en algún lugar de la ruta del directorio (de modo que extraiga solo 2.txt, 3.txt y 4.txt)?
Respuesta1
Su ejemplo unzip foo.zip *.txt
solo funcionó porque no había ningún *.txt
archivo en su directorio de trabajo. De lo contrario, *.txt
el shell lo habría expandido a los nombres de los archivos de texto en su directorio. Debe citarlo para estar seguro.
Como unzip
usa globos, use
unzip foo.zip '*acme*/*.txt'
o incluso
unzip foo.zip '*acme*.txt'
Si no desea restaurar la estructura de directorio original y extraer los archivos al directorio de trabajo actual, agregue la opción -j
:
unzip -j foo.zip '*acme*/*.txt'