martes 17 de febrero de 2009

Archivos de windows a linux

De cuando en cuando me pasa que me mandan archivos creados en windows, o yo me los mando desde un windows a un linux y me ocurre que siempre tienen la codificación esta extraña en la que los acentos y las ñ hacen cosas raras.

Preguntando a Ripper (fuente eterna de sabiduria) me ha recomendado recode y yo lo subo aqui para no olvidarme y para aquel al que le sirva.

Hay que recordar que Windows codifica en iso8859 y Linux en utf8, dicho esto:

- Abrimos un terminal
- aptitude install recode
- Es posible que os diga que es un software inseguro porque bla bla bla, yo le digo que Si y listo.
- recode iso8859-1..utf8 archivo

IMPORTANTES LOS "..", el comando es "recode Formato1..Formato2 archivo"


Espero que os sirva, de momento a mi no me ha servido gran cosa, pero por si las flys, ahi queda eso.

^_^

martes 28 de octubre de 2008

Shell script para cambiar de formato archivos de un directorio (y sus subdirectorios) en Linux

Como trabajo a ratos en un portatil de la empresa y este, al ser de uso general, tiene solo windows, me encuentro con que cuando subo los archivos al servidor linux tengo que cambiar el formato de tooooodos los archivos para eliminar el puñetero comando extra cuando saltas de linea.

Total... despues de hacerlo super complicado con un sistema recursivo se me encendió el poco cerebro que tengo y:

#!/bin/sh
INICIO=$1
FIND=$(find $1)
for archivo in $FIND
do
fromdos $archivo
if test -d $archivo; then chmod 755 $archivo; else chmod 644 $archivo
fi
echo "Modificando -> " $archivo
done

Solo necesitamos poner ./win2dos /home/alcachofa/DIRECTORIO y el script hace el resto.

Necesitamos para ejecutarlo el paquete tofrodos (que incluye los comandos fromdos, todos y los enalces unix2dos y dos2unix)

A mi me ha resultado útil, si alguno tiene otra forma de hacerlo... que avise.

Edit: Añadida comprobación de si el fichero que se está modificando es un directorio o no para aplicar chmod según corresponda.


EDIT 2 --- RESOLUCIÓN DE PROBLEMILLAS...
Surge con el codigo anterior un pequeeeeeño problemita, que consiste en que si aplicas frodos a una imagen... pues esta se corrompe, como no resulta un efecto deseado he modificado el script y de paso le pongo cierta info que viene bien:

#!/bin/sh
INICIO=$1
FIND=$(find $1)
for archivo inf $FIND
do
if test -d $archivo
then
chmod 755 $archivo
else
TIPO=$(file -bi $archivo | awk '{print $1}' )
chmod 644 $archivo
if [ $TIPO -a $TIPO == "image" ]
then echo "IMAGEN NO MODIFICADA -> " $archivo
else
fromdos $archivo
echo "Modificando -> " $archivo
fi
fi
done