2010-03-24 10 views
8

Estoy escribiendo un script bash que necesita convertir una cadena en minúscula. El problema es que lo estoy haciendo en un mac así que 'tr' no está disponible. ¿Cómo puedo hacer esto en un Mac?mayúscula a minúscula en bash en un mac

El problema que intento abordar es que mi script necesita reconocer si una extensión es un .gif o un .jpg, y no quiero tener que buscar .jpeg, .jPeg,. JPEG, jpeg, etc, etc, etc ... si hay una forma más inteligente de hacer esto que la conversión a minúsculas y pruebas de gif, jpg y jpeg, soy todo oídos :)

ACTUALIZACIÓN: me
soy un idiota
La razón de este Mac "no tiene", estos programas de texto de conversión básicos se debe a que sobreescribí PATH con "hola" al hacer algunas pruebas> _ <

+2

Qué ver Sion de Mac estás usando? 10.6 ciertamente tiene 'tr'. – kennytm

+0

10.5.8 ________ – Mala

Respuesta

10

en bash, puede utilizar nocaseglob

shopt -s nocaseglob 
for file in *.jpg *.jpeg *.gif 
do 
    echo "$file" 
done 
#turn off 
shopt -u nocaseglob 

en general para convertir los casos, diversas formas

echo "stRING" | awk '{print toupper($0)}' 

echo "STRING" | tr "[A-Z]" "[a-z]" # upper to lower 

echo "StrinNG" | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' #lower to upper 
+0

¿Qué efectos secundarios tendrá esto? ¿Hará bash match de una manera insensible a mayúsculas y minúsculas hasta que lo apague? – Mala

+0

Oh, también necesito obtener la extensión en minúsculas mientras la estoy escribiendo ... ¿Esto me ayudará? – Mala

+0

ah, no importa, voy con esto y anidado para bucles: para la extensión en gif jpg jpeg, para el archivo en *. $ Extensión, [...] hecho; Gracias! – Mala

2

en bash se pueden utilizar capitalizar:

echo "HelLo! how ArE you?" | capitalize -u 

echo "HelLo! how ArE you?" | capitalize -l 

echo "HelLo! how ArE you?" | capitalize -c 
+3

En mac, aparece "capitalize: command not found". – ben3000

+0

Incluso para quienes puedan tenerlo, sería útil si agregas el resultado de cada uno de esos tres comandos. –

4

este está integrado en bash:

para convertir $ y en mayúsculas:

y="this Is A test" 
echo "${y^^}" 

y para convertir $ y en minúsculas:

y="THIS IS a TeSt" 
echo "${y,,}" 
+5

No funciona en mi instalación de Yosemite ..... Tuve una "mala sustitución" ¿Alguna idea? – MisterJ

+1

@MisterJ No he actualizado a Yosemite todavía, pero sospecho que usa una versión similar a la disponible con Mavericks, que es 3.2.x (~ 8 años). Lamentablemente, estos operadores de modificación de casos se introdujeron en Bash 4. Sugiero usar ['' 'brew install bash'''] (http://brew.sh/) para obtener una versión moderna. – Exide

+2

@Exide sí Confirmo que la versión de bash yosemite es antigua, tuve otros problemas similares. Los resolvió utilizando otros métodos (como un buen tr viejo para este). – MisterJ

0
$ echo 'this IS some TEXT' | tr '[:upper:]' '[:lower:]' 
this is some text 
Cuestiones relacionadas