script para renombrar archivos vía ssh no me funciona (creo que son las '')

2013-11-13 Por tema Flako
Hola
Estoy intentando renombrar archivos de forma remota vía ssh
necesito renombrar archivos similares a 'z01_configuraMusica.conf' a
'configuraMusica.conf'  (sacarle el prefijo 'z01_'), necesitaria armar
el comando:

mv -vf  z01_configuraMusica.conf   configuraMusica.conf

la idea es ejecutarlos via ssh con: ssh user@hostremoto genero comando


La generación de comandos funciona de forma local, sin usar shh,
cuando uso ssh parece no andar el remplazo 'z01_' por '' (supongo que
estoy casteado de forma incorrecta las comillas)

he probado varias formas de remplazo, como:

for ii in *.conf; do ( dest=$(echo $ii|sed -e 's/z01_//'); echo mv -fv
$ii//$dest; ) done
for ii in *.conf; do ( dest=$(echo $ii | tr -d 'z01_'); echo mv -fv
$ii//$dest; ) done
for ii in *.conf; do ( dest=$(echo $ii | awk -v a=z01_
'{gsub(a,,$0); print  $0}'); echo  -fv $ii -- $dest; ) done


Pero al hacer:

ssh user@hostremto  cd /path; for ii in *.conf; do ( dest=$(echo
\$ii|sed -e 's/z01_//'); echo  -fv \$ii//\$dest; ) done

solo me devuelve:
z01_configuraMusica1.conf //  z01_configuraMusica1.conf
z01_configuraMusica2.conf //  z01_configuraMusica2.conf
z01_configuraMusica3.conf //  z01_configuraMusica3.conf



como que no toma el remplazo de 'z01_' por '', la verdad que luego de
horas de probar diferentes combinaciones de he desistido.
Tengo un error de concepto?  como debería castear las comillas para
hacer que funcione?

Gracias


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/cadqxbrs44wfcz5x5kzsbdugqq80snrequ8a1xaimhk2oqhl...@mail.gmail.com



Re: script para renombrar archivos vía ssh no me funciona (creo que son las '')

2013-11-13 Por tema Santiago López Denazis
On 11/13/2013 10:36 AM, Flako wrote:
 Hola
 Estoy intentando renombrar archivos de forma remota vía ssh
 necesito renombrar archivos similares a 'z01_configuraMusica.conf' a
 'configuraMusica.conf'  (sacarle el prefijo 'z01_'), necesitaria armar
 el comando:
 
 mv -vf  z01_configuraMusica.conf   configuraMusica.conf
 
 la idea es ejecutarlos via ssh con: ssh user@hostremoto genero comando
 
 
 La generación de comandos funciona de forma local, sin usar shh,
 cuando uso ssh parece no andar el remplazo 'z01_' por '' (supongo que
 estoy casteado de forma incorrecta las comillas)
 
 he probado varias formas de remplazo, como:
 
 for ii in *.conf; do ( dest=$(echo $ii|sed -e 's/z01_//'); echo mv -fv
 $ii//$dest; ) done
 for ii in *.conf; do ( dest=$(echo $ii | tr -d 'z01_'); echo mv -fv
 $ii//$dest; ) done
 for ii in *.conf; do ( dest=$(echo $ii | awk -v a=z01_
 '{gsub(a,,$0); print  $0}'); echo  -fv $ii -- $dest; ) done
 
 
 Pero al hacer:
 
 ssh user@hostremto  cd /path; for ii in *.conf; do ( dest=$(echo
 \$ii|sed -e 's/z01_//'); echo  -fv \$ii//\$dest; ) done
 
 solo me devuelve:
 z01_configuraMusica1.conf //  z01_configuraMusica1.conf
 z01_configuraMusica2.conf //  z01_configuraMusica2.conf
 z01_configuraMusica3.conf //  z01_configuraMusica3.conf
 

  Buenas!

  El problema que tienes, es que la subshell se ejecuta en tu equipo (el
$(echo ...)), y también las variables (aunque no estoy seguro cómo se
comporte dentro del for) $ii, $dest, bash las expande en tu equipo y no
en el remoto.

  Para evitar esto, en general basta con utilizar comillas simples ('')
en lugar de dobles.

  Por otro lado, no me complicaría usando sed, lee la sección 'Parameter
Expansion' del manual de bash.

  Saludos,

 
 como que no toma el remplazo de 'z01_' por '', la verdad que luego de
 horas de probar diferentes combinaciones de he desistido.
 Tengo un error de concepto?  como debería castear las comillas para
 hacer que funcione?
 
 Gracias
 
 


-- 
Santiago López Denazis
GNU/Linux SysAdmin
sldena...@gmail.com
Open your source, open your mind.

Por favor, no utilice formatos de archivo privativos para el intercambio
de documentos, como DOC y XLS, sino HTML, PDF, TXT, CSV o cualquier otro
que no obligue a utilizar un programa de un fabricante concreto. Vea
http://www.gnu.org/philosophy/no-word-attachments.es.html
--


-- 
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/52838851.1090...@gmail.com



Re: script para renombrar archivos vía ssh no me funciona (creo que son las '')

2013-11-13 Por tema Camaleón
El Wed, 13 Nov 2013 11:36:10 -0200, Flako escribió:

 Hola Estoy intentando renombrar archivos de forma remota vía ssh
 necesito renombrar archivos similares a 'z01_configuraMusica.conf' a
 'configuraMusica.conf'  (sacarle el prefijo 'z01_'), necesitaria armar
 el comando:
 
 mv -vf  z01_configuraMusica.conf   configuraMusica.conf
 
 la idea es ejecutarlos via ssh con: ssh user@hostremoto genero comando
 
 
 La generación de comandos funciona de forma local, sin usar shh, cuando
 uso ssh parece no andar el remplazo 'z01_' por '' (supongo que estoy
 casteado de forma incorrecta las comillas)
 
 he probado varias formas de remplazo, como:

(...)

Recuerda que también tienes el comando rename.

 Pero al hacer:
 
 ssh user@hostremto  cd /path; for ii in *.conf; do ( dest=$(echo
 \$ii|sed -e 's/z01_//'); echo  -fv \$ii//\$dest; ) done
 
 solo me devuelve:
 z01_configuraMusica1.conf //  z01_configuraMusica1.conf
 z01_configuraMusica2.conf //  z01_configuraMusica2.conf
 z01_configuraMusica3.conf //  z01_configuraMusica3.conf
 
 
 
 como que no toma el remplazo de 'z01_' por '', la verdad que luego de
 horas de probar diferentes combinaciones de he desistido.
 Tengo un error de concepto?  como debería castear las comillas para
 hacer que funcione?

Hum... tendrás que escapar las comillas ¿no? :-?

Saludos,

-- 
Camaleón


-- 
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/pan.2013.11.13.14.47...@gmail.com



Re: script para renombrar archivos vía ssh no me funciona (creo que son las '')

2013-11-13 Por tema Lic. Domingo Varela Yahuitl
Y donde esta definido tu destino o la ruta destino... tambien el fv!=mv  
tambien  puedes usar el comando basename

--- Mensaje Original ---

Desde: Camaleón noela...@gmail.com
Enviado: 13 de noviembre de 2013 8:47 AM
Para: debian-user-spanish@lists.debian.org
Asunto: Re: script para renombrar archivos vía ssh no me funciona (creo que son 
las '')

El Wed, 13 Nov 2013 11:36:10 -0200, Flako escribió:

 Hola Estoy intentando renombrar archivos de forma remota vía ssh
 necesito renombrar archivos similares a 'z01_configuraMusica.conf' a
 'configuraMusica.conf'  (sacarle el prefijo 'z01_'), necesitaria armar
 el comando:

 mv -vf  z01_configuraMusica.conf   configuraMusica.conf

 la idea es ejecutarlos via ssh con: ssh user@hostremoto genero comando


 La generación de comandos funciona de forma local, sin usar shh, cuando
 uso ssh parece no andar el remplazo 'z01_' por '' (supongo que estoy
 casteado de forma incorrecta las comillas)

 he probado varias formas de remplazo, como:

(...)

Recuerda que también tienes el comando rename.

 Pero al hacer:

 ssh user@hostremto  cd /path; for ii in *.conf; do ( dest=$(echo
 \$ii|sed -e 's/z01_//'); echo  -fv \$ii//\$dest; ) done

 solo me devuelve:
 z01_configuraMusica1.conf //  z01_configuraMusica1.conf
 z01_configuraMusica2.conf //  z01_configuraMusica2.conf
 z01_configuraMusica3.conf //  z01_configuraMusica3.conf



 como que no toma el remplazo de 'z01_' por '', la verdad que luego de
 horas de probar diferentes combinaciones de he desistido.
 Tengo un error de concepto?  como debería castear las comillas para
 hacer que funcione?

Hum... tendrás que escapar las comillas ¿no? :-?

Saludos,

--
Camaleón


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/pan.2013.11.13.14.47...@gmail.com


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/bay404-eas26300b98d00d5cabb5d9b5baa...@phx.gbl



Re: script para renombrar archivos vía ssh no me funciona (creo que son las '')

2013-11-13 Por tema Eduardo A . Bustamante López
 for ii in *.conf; do ( dest=$(echo $ii|sed -e 's/z01_//'); echo mv -fv
 $ii//$dest; ) done
 for ii in *.conf; do ( dest=$(echo $ii | tr -d 'z01_'); echo mv -fv
 $ii//$dest; ) done
 for ii in *.conf; do ( dest=$(echo $ii | awk -v a=z01_
 '{gsub(a,,$0); print  $0}'); echo  -fv $ii -- $dest; ) done
Primero que nada, te recomiendo que evites la forma:

  var=$(echo $var | comando)

Por varias razones:

1) «echo $var» falla para ciertos valores de $var, y el comando
 echo varía de shell a shell. Unos interpretan los \n otros no, etc.
2) Siempre, siempre, protege una expansión de variable con comillas
 dobles. «$var» - bien, «$var» - mal. A menos de que realmente
 sepas lo que estás haciendo y conozcas las implicaciones de no
 hacerlo (que se partirá en múltiples palabras según la variable IFS
 y también expandirá los patrones como * y ?)
3) La diferencia entre ... y '...' es que ... permite expansiones
 de variables y también sustituciones de comandos «$(foo)». '...' no
 permite absolutamente nada, ni siquiera una comilla sencilla.

 ssh user@hostremto  cd /path; for ii in *.conf; do ( dest=$(echo
 \$ii|sed -e 's/z01_//'); echo  -fv \$ii//\$dest; ) done
Como comentaba otro listero, al usar ... las expansiones $(...) se
ejecutan en la shell local, no en la remota. Tienes que proteger el
comando que mandas a SSH con comillas sencillas para evitar este
problema.

 como que no toma el remplazo de 'z01_' por '', la verdad que luego de
 horas de probar diferentes combinaciones de he desistido.
 Tengo un error de concepto?  como debería castear las comillas para
 hacer que funcione?

Mira, abajo te dejo una opción que puedes usar, con una demostración
de que funciona:

  $ ssh $host 'mkdir -p foo/bar; touch 
foo/bar/z01_configuraMusica{1..5}.conf';
  $ ssh $host 'cd foo/bar; for file in *.conf; do echo mv $file 
${file#*_}; done'
  mv z01_configuraMusica1.conf configuraMusica1.conf
  mv z01_configuraMusica2.conf configuraMusica2.conf
  mv z01_configuraMusica3.conf configuraMusica3.conf
  mv z01_configuraMusica4.conf configuraMusica4.conf
  mv z01_configuraMusica5.conf configuraMusica5.conf

Cuando verifiques que hace lo que quieres, quita el echo. Para
entender qué hace la expansión «${file#*_}», debes saber que a estas
expansiones se les llaman expansiones de parámetros, y son nativas al
shell. Lo que hace la expansión ${var#patrón} en específico es
remover «patrón» del inicio de la variable $var, así que si tienes:

var=hola; echo ${var#ho}, el resultado será «la». En nuestro caso, usamos el
patrón *_, que significa, quita hasta el primer «_», y todo lo que
está antes. Otra forma de hacerlo habría sido: ${file#z01_}, si
quieres ser más explícito.

-- 
Eduardo Alan Bustamante López


-- 
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20131113154429.ga9...@dualbus.me



Re: script para renombrar archivos vía ssh no me funciona (creo que son las '')

2013-11-13 Por tema Flako
Santiago: si es como dices,  se las diferencias de  y '' pero no lo
había razonado como parte del error., lo del uso del sed/awk es simple
costumbre... (me obliga a recordar sintaxis)

Camaleón: soy de vieja escuela y me gusta usar 'mv' :), y si es verdad
se llama escapear y no castear.. :(

Domingo:  el directorio destino es el mimos 'cd /path;', como usarías
basename? (yo lo uso para sacar path o extensiones)

Eduardo:  voy a probar los dos ejemplos..

En fin lo implemene con dos llamadas de ssh, 1ra: para recuperar lista
de archivos, luego genero un string_comando con los comandos  y 2da
ssh ejecuto el string_comando, no es muy prolijo, pero funciona :)

después voy a probar reescribirlo en una sola llamada.


Gracias


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/CADqxbRSidZauwrLin9yGLQzÉakt4exzhvrx4ynnxxhgef...@mail.gmail.com