Si un archivo contiene varios archivos en el directorio raíz, me gustaría crear un directorio con el nombre del archivo (sin extensión). Si un archivo contiene solo un directorio, me gustaría simplemente extraerlo. Supongamos que tengo el siguiente archivo:
# file: withdir.zip
somedir/alpha
somedir/beta
somedir/gamma
Si lo extraigo en el directorio actual, me gustaría tenerlo simplemente extraído ( unzip withdir.zip
):
somedir/alpha
somedir/beta
somedir/gamma
Ahora asuma el siguiente archivo:
# file: nodir.zip
alpha
beta
gamma
Cuando ejecuto unzip nodir.zip
termino abarrotando el directorio actual con los tres archivos:
alpha
beta
gamma
Prefiero correr unzip -d nodir nodir.zip
:
nodir/alpha
nodir/beta
nodir/gamma
Si uso nautilus y hago clic derecho en "Extraer aquí". Se comporta exactamente como debería. Pero desafortunadamente no he encontrado un interruptor de línea de comando para unzip
o
7z
que produzca el mismo comportamiento. ¿Cómo lograr eso? ¿Hay otras herramientas que pueda usar en su lugar (sin GUI)?
withdir
para el archivo,withdir.zip
aunque contiene solo un directorio en la raíz porquegrep -c "Folder = -"
regresa3
.patool maneja diferentes tipos de archivos y crea un subdirectorio en caso de que el archivo contenga múltiples archivos para evitar el desorden en el directorio de trabajo con los archivos extraídos.
Crear archivo
Extraer archivo
Para obtener una lista de los formatos compatibles, use
patool formats
.fuente
También puede usar unar , que crea un directorio contenedor de forma predeterminada cuando hay dos o más archivos de nivel superior:
Agregar
-d
para crear siempre un directorio contenedor.fuente