0 votos

Cómo comprimir varias carpetas en varios archivos zip

Mi estructura de carpetas es:

AÑO - MES - DÍA - SUBCARPETAS

Quiero comprimir cada subcarpeta de los directorios [DAY]. La solución de aquí que es:

for i in */; do zip -r "${i%/}.zip" "$i"; done

funciona bien siempre que lo haga desde una carpeta [DAY]. Pero si lo cambio a:

for i in */*/; do zip -r "${i%/}.zip" "$i"; done

y ejecutar desde una carpeta [MES] sigue funcionando, pero el problema es que el .zip ahora contiene una carpeta padre adicional por cada '/*' adicional en el comando cuando descomprimo.

¿Cómo puedo ejecutar el comando desde una carpeta [YEAR] con '/* /* /*' asegurándome de que el .zip sólo contiene la subcarpeta de nivel más bajo cuando lo descomprimo?

1voto

En tu caso puedes combinar dos bucles para conseguirlo

cd YEAR
for month in */; do
    (cd "$month";  for i in */; do zip -r "${i%/}.zip" "$i"; done)
done

P.D.: Si las carpetas del MES pueden estar vacías hay que comprobarlo en el bucle interno.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X