Necesito un programa para comprimir separadamente

Tengo unos 3000 archivos que quiero comprimir separadamente pero no me apetece ir uno a uno, cuando usaba windows habia algunas aplicacion (winrar) que tenian la opcion de comprimir separadamente, en la aplicación para comprimir que trae ubuntu por defecto no trae esa opcion (o yo no se donde esta), he buscado por la red pero despues de instalar 3 programas ninguno me ha resuelto nada, pues mi pregunta es si conoceis algun programita para ubuntu que me comprima los archivos separadamente. muchas gracias por vuestra atención.

Tanis13.
De programa no se ninguno, pero puedes usar un comando de consola, tan solo mete tus archivos a comprimir en un directorio y ejecuta uno de estos comandos

en formato zip
cd directorio-donde-estan-los-archivos
for file in `ls`; do zip $file.zip $file; done

en formato bzip
cd directorio-donde-estan-los-archivos
for file in `ls`; do bzip2 $file; done

Si quieres comprimirlo en rar
cd directorio-donde-estan-los-archivos
for file in `ls`; do rar a $file.rar $file; done


Todo depende del formato de compresión que quieras utilizar. Saludos.
Muchas gracias por los comandos eres un crack, lo he estado probando y van muy bien, pero a mi para los archivos que quiero comprimir no me va, por que el comando deja de funcionar si el archivo que se quiere comprimir tiene algun caracter extraño o tansiquiera algun espacio, he estado haciendo pruebas y asi es, renombrando algunos archivos para ver, no me gustaría tener que renombrar todos los archivos, a ver si te sacas de la manga algun comando que me de solucion a este nuevo problema, a alguna sugerencia de algun programa. Venga muchas gracias por todo.


Tanis13

EDITO: Si no te importa, a ver si me puedes indicar la fuente de tus conocimientos para leer un poco sobre los comandos de compresion. Es que iba a usar un man pero es que no se ni que programa se usa.
Cuidado con esos comandos y con ficheros con espacios, yo usaría algo como:

for i in directorio/* ; do programa "${i}" "${i}".extension ; done


- ferdy
he intentado usar el comando que me das pero no doy con la tecla, escribo esto for i in /home/tanis13/Escritorio/Temp/* ; do rar "${i}" "${i}".rar ; done pero solo me sale una lsiat con comandos que puedo usar, lo he trasteado mucho pero no a habido manera, alguna sugerencia?
Para el caso del rar te falta una 'a' por ahí....
Vale, ya le he puesto la 'a' y ya no me sale la lista, pero ahora me dice que el directorio no existe, el comando me queda asi :"for i in /home/tanis13/Escritorio/Temp/* ; do rar a "${i}" "${i}".rar ; done" y el error es exactamente :

Cannot open /home/tanis13/Escritorio/Temp/Esto es una prueba.smc.rar
No existe el fichero ó directorio
ERROR: Bad archive /home/tanis13/Escritorio/Temp/Esto es una prueba.smc

Dios , que torpe soy.
Hay que fijarse un poco más eh.... el comando rar tiene los ficheros 'cambiados'
A vale, maquineta, no sabia que eso influyese de algun modo, vale, muchas gracias me solucionaste la vida.




EDITO: Comprimi los archivos separadamente, pero ahora resulta de que me los guarda dentro del archivo comprimido con la direccion que tenian los archivos en la partición, no se si me explico, vamos, que cuando abro el archivo comprimido tengo que ir a /home/tani13/.... y ahí esta el archivo.

Me gustaria saber un par de cosas, como descomprimir ahora lo 3000 archivos con una sola linea y como solucionar el problemita este al comprimir. Gracias.
Ferdy escribió:Cuidado con esos comandos y con ficheros con espacios, yo usaría algo como:

for i in directorio/* ; do programa "${i}" "${i}".extension ; done


- ferdy


acertado como siempre, ferdy. venia a hacer ese mismo apunte...
F5inet, gracias por contestar, sabrias responderme a mi última duda¿ o alguien-'
Gracias.




EDITO: en vista de que a partir de la página 2 no contesta ni dios, decidí averiguarlo por mi mismo, ¿y que metodo use?, pues... ensayo y error, despues de muchos intentos probando a ver que pasaba con poquitos archivos averigue como hacer y por si a alguien le interesa simplemente me fui con la consola al driectorio donde estan los archivos que queria comprimir separadamente, y del comando que me dijo el compañero le quite la direccion dejando tan solo el * quedandome de este modo:
for i in * ; do rar a "${i}".rar "${i}" ; done



Muchas gracias a todos por los consejos y ayuda.

PD: aunque se que no me va a leer nadie, lo intentare, si no pues dentro de unos día posteo unos nuevo, mi pregunta es ahora: Como descomprimo de forma masiva multiples archivos comprimidos, por comando o en su defecto un programita grafico. Venga, gracias de nuevo a todos.


EDITO2:A ver, llevo un buen rato trasteando y creo que algo va mal, que tiene de malo esto?:
for FILE in /home/tanis13/Escritorio/Temp/* do unrar x $FILE -C /home/tanis13/Escritorio/Temp/; done

me dice esto:
bash: error de sintaxis cerca de token no esperado `done'
pues no se que va antes del done para que esto funciones

EDITO3:Haciendo esto: for FILE in `ls`; do unrar x * $FILE /home/tanis13/Escritorio/Temp/ ; done
ya no me da error y hace como el que descomprime pero me pone esto:

Extracting from Archivo_de_prueba.rar
No files to extract
Eso con todos los que hay en el directorio, pero si lo intento con uno solo simplemte con poner unrar x Archivo_de_prueba.rar me lo descomprime sin problemas, que cosa mas rara.

Intentadolo por el metodo de Ferdy: for i in * ; do unrar x "${i}" "${i}".rar ; done
Mismos resultado

Ayuda por favor.

EDITO4: Al final no he conseguido aveguar el comando necesario para descomprimir a la vez distintos archivos, pero lo he conseguido hacer, con un programa, el peazip, va de puta pena, pero porlo menos hace el trabajo que yo necesito, no comprime en rar por defecto pero se le puede añadir las librerias RAR3 de la page oficial que aunque no son libres es lo que hay, para instalar "sudo apt-get install peazip" estan en los repositorios de ubuntu.

Nota: con el programa no he conseguido comprimir varios archivos de forma independiente.

Gracias a todo por vuestra atención.
Otra solucion sin bucles:

find . -type f | xargs gzip
Tanis13 escribió:EDITO2:A ver, llevo un buen rato trasteando y creo que algo va mal, que tiene de malo esto?:
for FILE in /home/tanis13/Escritorio/Temp/* do unrar x $FILE -C /home/tanis13/Escritorio/Temp/; done


Te falto una ; antes del do
for FILE in /home/tanis13/Escritorio/Temp/*; do unrar x $FILE -C /home/tanis13/Escritorio/Temp/; done


Tanis13 escribió:EDITO3:Haciendo esto: for FILE in `ls`; do unrar x * $FILE /home/tanis13/Escritorio/Temp/ ; done
ya no me da error y hace como el que descomprime pero me pone esto:

Extracting from Archivo_de_prueba.rar
No files to extract

Tienes un * de más
for FILE in `ls`; do unrar x $FILE /home/tanis13/Escritorio/Temp/ ; done


EDIT: una vez que empiezo con un codigo no puedo parar [agggtt] asi que alla van unos scripts con GUI, (usando el kdialog del kde)

Para comprimir
#!/bin/bash
RAR=`which rar`
if [ $? != 0 ]; then
    kdialog --sorry "El programa rar no fue encontrado"
    exit 1
fi
input=`kdialog --getexistingdirectory $HOME --title "Directorio de entrada"`
if [ $? != 0 ]; then
    kdialog --sorry "No se selecciono el directorio de entrada"
    exit 1
fi
output=`kdialog --getexistingdirectory $HOME --title "Directorio de salida"`
if [ $? != 0 ]; then
    kdialog --sorry "No se selecciono el directorio de salida"
    exit 1
fi
cd $input
for archivo in `ls $input`; do
    name=${archivo##*/}
    $RAR a ${output}/${name%.*}.rar ${archivo} &> /dev/null
    if [ $? != 0 ]; then
        kdialog --sorry "Error comprimiendo el archivo ${archivo}"
    fi
done
cd -
kdialog --msgbox "Completado"


Para descomprimir
#!/bin/bash
UNRAR=`which unrar`
if [ $? != 0 ]; then
    kdialog --sorry "El programa unrar no fue encontrado"
    exit 1
fi
input=`kdialog --getexistingdirectory $HOME --title "Directorio de entrada"`
if [ $? != 0 ]; then
    kdialog --sorry "No se selecciono el directorio de entrada"
    exit 1
fi
output=`kdialog --getexistingdirectory $HOME --title "Directorio de salida"`
if [ $? != 0 ]; then
    kdialog --sorry "No se selecciono el directorio de salida"
    exit 1
fi
cd ${input}
for archivo in `ls $input`; do
    $UNRAR x -y ${input}/${archivo} ${output} &> /dev/null
    if [ $? != 0 ]; then
        kdialog --sorry "Error descomprimiendo el archivo ${archivo}"
    fi
done
cd -
kdialog --msgbox "Completado"


Ambos scripts piden los directorios fuente y destino, se que se pueden mejorar más, pero aca ya son las 12am y ya estoy con sueño. [maszz]
12 respuestas