Cambiar con Bash extensión de archivos de forma masiva

Hace un tiempo, elaboré un pequeño script con Bash que modifica de alguna forma las extensiones de archivos de texto plano, pese a varias necesidades de cambiar extensiones a cualquier tipo de archivo, lo fui cambiando un poco, acá dejo la última versión que hice:

#! /bin/bash

####
# Script para cambiar extensiones de ficheros o archivos
# Noviembre 2010
####

ext1=$1  # Argumento ext1 es la extensión inicial
ext2=$2  # Argumento ext2 es la extensión final

RUTA=$(/bin/pwd)

for i in *
do
 if [ -f "$RUTA/$i" ]; then
  arg=${i%%.$ext1} 
  if [ ! -f "$RUTA/$arg" ]; then
   arg1=${arg#$i}
   mv "$RUTA/$arg1.$ext1" "$RUTA/$arg1.$ext2"
  fi
 else
  echo "$i" > /dev/null
 fi
done
 
exit 0

El script lo llamé chext y lo copié en la ruta /usr/local/bin con sus respectivos privilegios de ejecución para que todos los usuarios que usen el sistema puedan ejecutar el programa, antes de usarlo se debe ubicar el cursor dentro del directorio donde están todos los archivos que se les modificará la extensión, se ejecuta de la siguiente forma:

$ chext html php

Donde html es la extensión actual de los archivos y php es la extensión que quiero dejarle a los archivos.

Advertisements
This entry was posted in Bash. Bookmark the permalink.

2 Responses to Cambiar con Bash extensión de archivos de forma masiva

  1. Record♫ says:

    no entiendo nada…
    se copia eso en un note?
    supongo que si..
    que extension lleva?
    disculpa la ignorancia…
    pero gracias.

    • felixurbina says:

      Qué tal, simplemente haces un archivo de texto simple, usas el contenido y lo modificas a tus necesidades, lo colocas en el directorio donde hice referencia sólo para que puedas usar tu script desde la ruta que quieras usarlo.

      Saludos.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s