Crear un .zip por cada archivo??

Imagen de jevilon
0 puntos

No se si me explicare bien, tengo un directorio con mas de 200 archivos descomprimidos, y me gustaria comprimirlos, pero cada uno en un zip. Es decir que me queden mas de 200 archivos .zip, cada uno con el mismo nombre que el archivo descomprimido...
¿Como puedo hacer esto? Por que hacerlo a mano, uno por uno es un autentica tarea larga

Imagen de quest10
+1
0
-1

Lo primero de todo dejar claro que ni soy un experto en bash script ni he probado esta solución. Dicho esto creo que redireccionando la salida del listado del directorio al zip debiera valer. Creo que sería algo parecido a:

ls /directorio/a/comprimir | zip $1.zip $1
+1
0
-1
Imagen de mz
+1
0
-1

puedes crear un script, luego lo colocas en el directorio donde esta todo lo que quieres comprimir, y lo ejecutas: ./script

por supuesto antes de ejecutarlo le has tenido que dar permisos de ejecucion con chmod +x script

#!/bin/bash

for file in *; do
        zip $file $file
done

nota: comprime los archivos, no tengo ni idea si lo hará con los directorios

+1
0
-1
Imagen de jevilon
+1
0
-1

No me funciona de ninguna de esas 2 maneras. Al final he encontrado un programa de win que lo hace y con wine lo he hecho. Gracias.

+1
0
-1
Imagen de joseluis
+1
0
-1

¿En el ejemplo de mc qué error te está dando?
¿Puede ser que los nombres de los ficheros que quieres comprimir tengan espacios?

Si fuera lo de los espacios prueba lo siguiente:

#!/bin/bash

for file in *; do
    zip -r "${file}.zip" "${file}"
done

La opción -r es por si alguno es un directorio para que te incluya en el zip todo lo que está dentro del directorio.


Fdo. Forense asesino, Censor fundamentalista, Fustigador de novatos y Patético maleducado

+1
0
-1

Imagen de atareao
+1
0
-1

Con este script en python, puedes hacer lo que necesitas:

from sys import argv
from os import path
import zipfile

if len(argv) < 2:
 print 'At least one file to zip'
 sys.exit()


files=argv[1:]
for file in files:
 tf=path.splitext(file) 
 salida=tf[0]+'.zip'
 zfile=zipfile.ZipFile(salida,'w')
 zfile.write(file,path.basename(file),zipfile.ZIP_DEFLATED)
 zfile.close()

El atareao
http://www.atareao.es
---------------------------------------------------
Solo hay dos cosas infinitas: el universo y la estupidez humana. Y no estoy tan seguro de la primera. - Albert Einstein

+1
0
-1

El atareao
http://www.atareao.es
Solo hay dos cosas infinitas: el universo y la estupidez humana. Y no estoy tan seguro de la primera. - Albert Einstein