Mailinglist Archive: opensuse-es (2236 mails)
| < Previous | Next > |
Re: [opensuse-es] Mi directorio en varios DVDs con k3b - script duplicar
- From: "Carlos E. R." <robin.listas@xxxxxxxxxxxxxx>
- Date: Mon, 15 Jan 2007 02:11:28 +0100 (CET)
- Message-id: <Pine.LNX.4.64.0701150141530.5020@xxxxxxxxxxxxxxxx>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
El 2007-01-14 a las 18:18 +0100, Harmless escribió:
> > Bueno, si despues después de la siesta, del paseo, del cine, de las copas
> > y todo eso me quedan ganas, me pongo :-p
>
> JAJAJAJAJA
>
> Ha sido bueno lo del premio, pero estoy seguro que tendría el primer premio
> (por descontado)
Bueno, pues ya tengo uno, y con un bug conocido: falla en los nombres de
ficheros y directorios con espacios, no los hace. Tengo una solución para
eso con un programita en pascal que los "escapa", pero igual alguien
conoce otra manera "tipo script" o más correcta (el origen del error lo
indico abajo):
#!/bin/bash
ORIGEN=/home/cer/tmp
DESTINO=/home/cer/tmp.lnk
function CreateSLink()
{
# target name
if ! test -L "$2" ; then
ln "$1" "$2" #> /dev/null
echo "$1" "-->" "$2"
fi
}
function CreateHLink() # ¡¡Recursiva!!
{
# target name
if ! test -f "$2" ; then
ln "$1" "$2" # > /dev/null
echo "$1" "-->" "$2"
fi
}
function CreateDir()
{
if ! test -d "$1" ; then
mkdir "$1" # > /dev/null
echo "Mk: ""$1"
fi
}
function UnNivel()
{
local IFILE=$1
local OFILE=$2
local FILE_L1="A"
for FILE_L1 in $( ls $IFILE )
do
# Es un archivo
if test -f "$IFILE/$FILE_L1" ; then
CreateHLink "$IFILE/$FILE_L1" "$OFILE/$FILE_L1" # enlazar fichero
fi
# Es un directorio
if test -d "$IFILE/$FILE_L1" ; then
CreateDir "$OFILE"/"$FILE_L1" # crear directorio
UnNivel "$IFILE/$FILE_L1" "$OFILE"/"$FILE_L1" # Recorrer el siguiente nivel
fi
done
}
CreateDir $DESTINO
UnNivel $ORIGEN $DESTINO
# Bugs: falla si el nombre del directorio contiene espacios, no lo crea.
# La culpa es de la linea:
# for FILE_L1 in $( ls $IFILE )
# devuelve varias palabras por fichero cuando tiene espacios.
#Se ve con esta modificación:
# do
# echo "-"$FILE_L1"-"
- --
Saludos
Carlos E. R.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)
Comment: Made with pgp4pine 1.76
iD8DBQFFqtTStTMYHG2NR9URAtRAAJ9n0WNF5/4YTEYDPhf+rBfsxEUi2QCdG7xe
3qFbED6cx2o3Bss6MhMgRAQ=
=I8oA
-----END PGP SIGNATURE-----
Hash: SHA1
El 2007-01-14 a las 18:18 +0100, Harmless escribió:
> > Bueno, si despues después de la siesta, del paseo, del cine, de las copas
> > y todo eso me quedan ganas, me pongo :-p
>
> JAJAJAJAJA
>
> Ha sido bueno lo del premio, pero estoy seguro que tendría el primer premio
> (por descontado)
Bueno, pues ya tengo uno, y con un bug conocido: falla en los nombres de
ficheros y directorios con espacios, no los hace. Tengo una solución para
eso con un programita en pascal que los "escapa", pero igual alguien
conoce otra manera "tipo script" o más correcta (el origen del error lo
indico abajo):
#!/bin/bash
ORIGEN=/home/cer/tmp
DESTINO=/home/cer/tmp.lnk
function CreateSLink()
{
# target name
if ! test -L "$2" ; then
ln "$1" "$2" #> /dev/null
echo "$1" "-->" "$2"
fi
}
function CreateHLink() # ¡¡Recursiva!!
{
# target name
if ! test -f "$2" ; then
ln "$1" "$2" # > /dev/null
echo "$1" "-->" "$2"
fi
}
function CreateDir()
{
if ! test -d "$1" ; then
mkdir "$1" # > /dev/null
echo "Mk: ""$1"
fi
}
function UnNivel()
{
local IFILE=$1
local OFILE=$2
local FILE_L1="A"
for FILE_L1 in $( ls $IFILE )
do
# Es un archivo
if test -f "$IFILE/$FILE_L1" ; then
CreateHLink "$IFILE/$FILE_L1" "$OFILE/$FILE_L1" # enlazar fichero
fi
# Es un directorio
if test -d "$IFILE/$FILE_L1" ; then
CreateDir "$OFILE"/"$FILE_L1" # crear directorio
UnNivel "$IFILE/$FILE_L1" "$OFILE"/"$FILE_L1" # Recorrer el siguiente nivel
fi
done
}
CreateDir $DESTINO
UnNivel $ORIGEN $DESTINO
# Bugs: falla si el nombre del directorio contiene espacios, no lo crea.
# La culpa es de la linea:
# for FILE_L1 in $( ls $IFILE )
# devuelve varias palabras por fichero cuando tiene espacios.
#Se ve con esta modificación:
# do
# echo "-"$FILE_L1"-"
- --
Saludos
Carlos E. R.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)
Comment: Made with pgp4pine 1.76
iD8DBQFFqtTStTMYHG2NR9URAtRAAJ9n0WNF5/4YTEYDPhf+rBfsxEUi2QCdG7xe
3qFbED6cx2o3Bss6MhMgRAQ=
=I8oA
-----END PGP SIGNATURE-----
| < Previous | Next > |