Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: jarfuch en 9 Marzo 2011, 17:49 pm



Título: Scrip BASH para renombrar Archivos multiples
Publicado por: jarfuch en 9 Marzo 2011, 17:49 pm
Buenas tardes a todos, este es mi primer post y queria consultarles sobre un script que necesito hacer.
El tema es que necesito renombrar masivamente un grupo de archivos en Linux, tiene que ser si o si por consola, y el problema es que por  un problema de codificacion de caracteres, quedo en varios nombres la cadena "codificación no valida" despues del nombre y la extension.
Para complicarlo mas todavía, varios archivos tienen mas de un punto en su nombre, por ejemplo: "archivo.de texto.odt (codificacion no valida)" entoncves necesito eso, sacar la ultima parte del nombre del archivo, contando los caracteres desde la derecha, pero que quede todo el nombre igual.

Espero que se entienda y que alguin me pueda dar una mano.

Desde ya muchas gracias

Javier


Título: Re: Scrip BASH para renombrar Archivos multiples
Publicado por: RyogiShiki en 9 Marzo 2011, 19:23 pm
Este script en Ruby (no bash) hará el trabajo por ti: http://paste.ideaslabs.com/show/hxKpEN2Jie descargalo, le cambias la extensión de txt a rb y lo ejecutas en una terminal con los permisos necesarios para renombrar archivos con el comando:

Código
  1. ruby nombredelescript.rb

También puedes ir a la linea 7 y cambias la cadena por la que quieras quitar de los archivos, por defecto es: "(codificación no válida)" con las tildes y todo. Le das la ruta con los archivos y te los renombrará... y lo de los puntos realmente no importa con tal de que la última palabra después de un punto sea una extensión válida....

Requisitos: Tener instalado Ruby claro está

Saludos

PD: Wii MSG: 200!! XD


Título: Re: Scrip BASH para renombrar Archivos multiples
Publicado por: leogtz en 10 Marzo 2011, 01:40 am
Necesito que pongas lo que llevas y cómo estás intentandolo.

Necesito que pongas de ejemplo un archivo (o archivos) y cómo quieres renombrarlos.


Código
  1. [leo@archero Desktop]$ for file in *; do echo -e "Archivo : ${file}, ext : ${file#*.}"; done
  2. Archivo : arreglos.txt, ext : txt
  3. Archivo : bible.txt, ext : txt
  4. Archivo : code, ext : code
  5. Archivo : code.c, ext : c
  6. Archivo : comandos.txt, ext : txt
  7. Archivo : Cosas, ext : Cosas
  8. Archivo : fbcmd_update.php, ext : php
  9. Archivo : fobias.txt, ext : txt
  10. Archivo : Mastering_Unix_Shell_Scripting, ext : Mastering_Unix_Shell_Scripting
  11. Archivo : pl.pl, ext : pl
  12. Archivo : protocol.pdf, ext : pdf
  13. Archivo : prueba.pl, ext : pl
  14. Archivo : rae.sh, ext : sh
  15. Archivo : shell.sh, ext : sh
  16. Archivo : tecladix.txt, ext : txt
  17. Archivo : un.pl, ext : pl
  18. [leo@archero Desktop]$
  19.