elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Bash] Problemas con paréntesis y espacios en nombres de fichero [Solucionado]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Bash] Problemas con paréntesis y espacios en nombres de fichero [Solucionado]  (Leído 11,882 veces)
Gallu

Desconectado Desconectado

Mensajes: 247



Ver Perfil
[Bash] Problemas con paréntesis y espacios en nombres de fichero [Solucionado]
« en: 17 Julio 2011, 16:15 pm »

Hola a todos , estoy creando un script para renombrar ficheros, con nombres de ficheros normales ya funciona , pero cuando tengo nombres de fichero con espacios o paréntesis no va bien , alguna idea?
El script:
Código
  1. #!/bin/bash
  2. #
  3. #description : Renombra los ficheros del directorio actual y los deja en la carpeta de renombrados
  4. #autor = didacso
  5.  
  6. carpetaNueva="renombrados"
  7. extension="jpg"
  8. AQUI=$( pwd )
  9. RENOMBRADOS="$AQUI"/$carpetaNueva
  10. ELEMENTOS=0
  11.  
  12. mkdir "$RENOMBRADOS"
  13. for i in $( ls ); do
  14. NOW=$(date +"%m-%d-%y")-$(date +"%N")
  15. echo  "$AQUI/$NOW.$extension" >> "$RENOMBRADOS/estadisticas.txt"
  16. echo "problema con " "$i"
  17. cp "$i" "$AQUI/$NOW.$extension"
  18. mv "$i" "$RENOMBRADOS/$i"
  19. let ELEMENTOS=ELEMENTOS+1
  20. done
  21.  
  22.  
  23. gxmessage -center -title "Operación completada" $ELEMENTOS " elementos procesados"
  24.  
  25. echo $ELEMENTOS " elementos procesados" >> "$RENOMBRADOS/estadisticas.txt"
  26.  
la salida del comando es la siguiente
Código
  1. cp: no se puede efectuar `stat' sobre «0g3nG3iJN4FaUzY0H4KvcdJZGFY»: No existe el fichero o el directorio
  2. mv: no se puede efectuar `stat' sobre «0g3nG3iJN4FaUzY0H4KvcdJZGFY»: No existe el fichero o el directorio
  3. cp: no se puede efectuar `stat' sobre «(1)»: No existe el fichero o el directorio
  4. mv: no se puede efectuar `stat' sobre «(1)»: No existe el fichero o el directorio
  5. cp: no se puede efectuar `stat' sobre «0g3nG3iJN4FaUzY0H4KvcdJZGFY»: No existe el fichero o el directorio
  6. mv: no se puede efectuar `stat' sobre «0g3nG3iJN4FaUzY0H4KvcdJZGFY»: No existe el fichero o el directorio
  7. cp: no se puede efectuar `stat' sobre «(10).jpg»: No existe el fichero o el directorio
  8. mv: no se puede efectuar `stat' sobre «(10).jpg»: No existe el fichero o el directorio
  9. cp: no se puede efectuar `stat' sobre «0g3nG3iJN4FaUzY0H4KvcdJZGFY»: No existe el fichero o el directorio
  10. mv: no se puede efectuar `stat' sobre «0g3nG3iJN4FaUzY0H4KvcdJZGFY»: No existe el fichero o el directorio
  11. cp: no se puede efectuar `stat' sobre «(2)»: No existe el fichero o el directorio
  12. mv: no se puede efectuar `stat' sobre «(2)»: No existe el fichero o el directorio
  13. cp: no se puede efectuar `stat' sobre «0g3nG3iJN4FaUzY0H4KvcdJZGFY»: No existe el fichero o el directorio
  14. mv: no se puede efectuar `stat' sobre «0g3nG3iJN4FaUzY0H4KvcdJZGFY»: No existe el fichero o el directorio
  15. cp: no se puede efectuar `stat' sobre «(4)»: No existe el fichero o el directorio
  16. mv: no se puede efectuar `stat' sobre «(4)»: No existe el fichero o el directorio
  17. cp: no se puede efectuar `stat' sobre «0g3nG3iJN4FaUzY0H4KvcdJZGFY»: No existe el fichero o el directorio
  18. mv: no se puede efectuar `stat' sobre «0g3nG3iJN4FaUzY0H4KvcdJZGFY»: No existe el fichero o el directorio
  19. cp: no se puede efectuar `stat' sobre «(5).jpg»: No existe el fichero o el directorio
  20. mv: no se puede efectuar `stat' sobre «(5).jpg»: No existe el fichero o el directorio
  21.  
  22.  

los nombres de los ficheros son los siguientes:

Código
  1. 0g3nG3iJN4FaUzY0H4KvcdJZGFY (1)       0g3nG3iJN4FaUzY0H4KvcdJZGFY (2)  0g3nG3iJN4FaUzY0H4KvcdJZGFY (5).jpg  0g3nG3iJN4FaUzY0H4KvcdJZGFY (9).jpg
  2. 0g3nG3iJN4FaUzY0H4KvcdJZGFY (10).jpg  0g3nG3iJN4FaUzY0H4KvcdJZGFY (4)  0g3nG3iJN4FaUzY0H4KvcdJZGFY (8).jpg  
  3.  
no se si el problema es por el espacio o por el paréntesis


« Última modificación: 21 Julio 2011, 08:46 am por Leo Gutiérrez. » En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Problemas con paréntesis y espacios en nombres de fichero
« Respuesta #1 en: 17 Julio 2011, 18:41 pm »

Prueba a extraer las carpetas y archivos conflictivos desde un archivo de texto, mira:


Código
  1. #!/bin/bash
  2. ls -1 > cosas
  3. while read line
  4. do
  5. echo -e "Problema con : [$line]";
  6. done < cosas
  7. rm -f cosas
  8.  

Mira, yo tengo estos archivos con espacios:


Código
  1. &#9484;&#9472;[0 leo@leo-945GCT-M ~/Escritorio]$
  2. &#9492;&#9472;> ls -1 *.jpg
  3. 0g3nG3iJN4FaUzY0H4KvcdJZGFY (10).jpg
  4. 0g3nG3iJN4FaUzY0H4KvcdJZGFY (8).jpg
  5. &#9484;&#9472;[0 leo@leo-945GCT-M ~/Escritorio]$
  6. &#9492;&#9472;>
  7.  

Y corriendo el código:

Citar
Problema con : [ 0g3nG3iJN4FaUzY0H4KvcdJZGFY (10).jpg ]
Problema con : [ 0g3nG3iJN4FaUzY0H4KvcdJZGFY (8).jpg ]
Problema con : [ alg.c ]
Problema con : [ args.c ]
Problema con : [ autos.bc ]
Problema con : [ bdpass.kdb ]
Problema con : [ code.c ]
...

El script toma bien los nombres con espacios o paréntesis.

Saludos.


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Gallu

Desconectado Desconectado

Mensajes: 247



Ver Perfil
Re: Problemas con paréntesis y espacios en nombres de fichero
« Respuesta #2 en: 17 Julio 2011, 18:59 pm »

Hola Leo , gracias por contestar, tu código funciona bien, pero estaba intentando hacerlo sin necesidad de un fichero , en mi código me había dado cuenta de que los nombres de fichero que contienen espacios los divide en dos , por ejemplo
foto 1.jpg
al hacer el ls i guardar el nombre del fichero en i , si hago un printf de i me pondría
foto
1.jpg
la verdad es que me gustaría arreglarlo para que me lo pille de esa manera, el problema esta en
Código
  1. for i in $( ls -1 ); do
  2.  

se te ocurre algo ?
En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Problemas con paréntesis y espacios en nombres de fichero
« Respuesta #3 en: 17 Julio 2011, 19:32 pm »

Código
  1. #!/bin/bash
  2. ls -1 | while read archivo
  3. do
  4. echo -e "[$archivo]";
  5. done
  6.  

Código:
[0g3nG3iJN4FaUzY0H4KvcdJZGFY (10).jpg]
[0g3nG3iJN4FaUzY0H4KvcdJZGFY (8).jpg]
[alg.c]
[args.c]
...
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Gallu

Desconectado Desconectado

Mensajes: 247



Ver Perfil
Re: Problemas con paréntesis y espacios en nombres de fichero
« Respuesta #4 en: 17 Julio 2011, 19:56 pm »

Perfecto , me ha funcionado a la perfección, muchas gracias , dejo el script completo por si alguien le sirve, este script debe ubicarse en la ruta de scripts de nautilus para que aparezca el menu contextual y pueda ser llamado dando al botón derecho dentro de cualquier directorio, creará una carpeta llamada renombrados donde dejará los archivos tal y como estaban antes de renombrarlos.
Código
  1. /home/diego/.gnome2/nautilus-scripts

Se puede mejorar ...

renombra.sh
Código
  1. #!/bin/bash
  2. #
  3. #description : Renombra los ficheros del directorio actual y los deja en la carpeta de renombrados
  4. #autor = didacso  for i in $( ls ); do
  5.  
  6. carpetaNueva="renombrados"
  7. extension="jpg"
  8. AQUI=$( pwd )
  9. RENOMBRADOS="$AQUI"/$carpetaNueva
  10. let ELEMENTOS=0
  11.  
  12. mkdir "$RENOMBRADOS"
  13. ls -1 | while read i ; do
  14. NOW=$(date +"%m-%d-%y")-$(date +"%N")
  15. echo  "$AQUI/$NOW.$extension" >> "$RENOMBRADOS/estadisticas.txt"
  16. cp "$i" "$AQUI/$NOW.$extension"
  17. mv "$i" "$RENOMBRADOS/$i"
  18. let ELEMENTOS=ELEMENTOS+1
  19. done
  20.  
  21.  
  22. gxmessage -center -title "Operación completada" $ELEMENTOS " elementos procesados"
  23.  
  24. echo $ELEMENTOS " elementos procesados" >> "$RENOMBRADOS/estadisticas.txt"
  25.  
En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[SOLUCIONADO]IRC winsock.senddata,No reconoce espacios ?¿¿
Programación Visual Basic
locot3 4 3,921 Último mensaje 10 Mayo 2009, 23:29 pm
por locot3
[batch] problema con variables y espacios[Solucionado]
Scripting
corax 4 14,224 Último mensaje 10 Octubre 2009, 19:12 pm
por corax
[SOLUCIONADO] [Bash] Problemas con grep en una URL
Scripting
aaronduran2 3 4,880 Último mensaje 20 Noviembre 2010, 23:58 pm
por aaronduran2
Rectangulo en bash con espacios
Scripting
mimesis 0 2,759 Último mensaje 5 Marzo 2013, 08:18 am
por mimesis
[Bash] Espacios y cmds. [RESUELTO]
Scripting
KZN 1 2,741 Último mensaje 23 Mayo 2015, 21:16 pm
por KZN
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines