¿Cómo podría comprimir subdirectorios en archivos separados?
Ejemplo:
directory
subdir1
subdir2
Debería crear subdir1 (.tar) .gz y subdir2 (.tar) .gz
Este pequeño script parece ser su mejor opción, dados sus requisitos:
cd directory
for dir in */
do
base=$(basename "$dir")
tar -czf "${base}.tar.gz" "$dir"
done
Maneja correctamente directorios con espacios en sus nombres.
Qué tal esto:
find * -maxdepth 0 -type d -exec tar czvf {}.tar.gz {} \;
Explicación: ejecuta una búsqueda en todos los elementos del directorio actual. Maxdepth 0 hace que no se repita más bajo que los argumentos dados. (En este caso *, o todos los elementos en su directorio actual) El argumento 'd' para "-type" solo coincide con los directorios. Entonces exec ejecuta tar en cualquier partido. ({} se reemplaza por el archivo correspondiente)
fuente
for dir in `find * -maxdepth 0 -type d`; do tar -cvzf ${dir}.tar.gz ${dir}; done
Esto creará un archivo llamado blah.tar.gz para cada archivo en un directorio llamado blah.
Si tiene más que simplemente directorios en el directorio (es decir, archivos también, ya que ls devolverá todo en el directorio), use esto:
El grep -v excluye el directorio actual que se mostrará en el
find
comando por defecto.fuente
for dir in *