Archivo de Etiquetas de 'terminal'

Bucles en la terminal

Hace poco necesitaba yo borrar, en una estructura de directorios, todos los ficheros cuya extensión fuera .class. Estas tareas suelen ser un tedio, pero muy fáciles de solucionar si sabes un poco de shell scripting. El ejemplo es el siguiente:

$ for i in `find . -name '*.class'` ; do echo "Borrando $i" ; rm "$i" ; done
Esto haría la magia en una terminal con intérprete de mandatos bash. Si usais tcsh como yo, la cosa es un poco distinta:

$ foreach i ( ` find . -name '*.class' ` )
foreach? echo "Borrando $i"
foreach? rm $i
foreach?end

Como se ve, en tcsh es un poco menos intuitivo, ya se sabe que para programar, bash es bastante mejor :-), pero el resultado es equivalente.

Any to mp3

¡Bueno, pues aquí va la primera entrada :D! ¿Nunca os las habeis visto con los malditos archivos wma? Yo si, y debo decir que son odiosos, nada menos que de Mocosoft. Más que nada, no me gustan porque mi fabulosa radio no lee más que MP3. Asín que, con las mismas, he hecho un cutre script que convierte cualquier archivo de cualquier tipo que pueda leer mplayer (es decir, cualquiera :)) a formato mp3. Incluso se puede usar para extraer el sonido de un archivo de video cualquiera (un concierto, por ejemplo :)). Aquí os dejo el estupendo y citado script:


#!/bin/bash
# any2mp3 - Recives an extension and convert any file with this extension
#           to mp3 using mplayer and lame.
# Requirements - mplayer, lame.
# Diego Toharia - deigote@gmail.com

# Verify parameter
if [[ $# -ne 1 ]]
then
  echo "Error: first parameter (file extension to convert) missing"
  echo "Usage: `basename $0` "
  exit 1
fi
ext=$1

# Remove spaces
for i in *.$ext; do
  mv "$i" `echo $i | tr ' ' '_'` ;
done

# To wav with mplayer, to mp3 with lame.
for i in *.$ext ; do
  name="`basename "$i" ."$ext" | tr '_' ' '`.mp3"
  echo $name
  mplayer $i -ao pcm:file=scratch.$$.wav && \  lame -h -V 7 scratch.$$.wav "$name" ;
done

# Remove scratch file
rm scratch.$$.wav

Por supuesto, sólo para Linux. ¿O que pensabais?