2010-12-10 15 views
21

Quiero traducir el siguiente código python a bash. El código cambia el nombre de la extensión a .html y ejecuta Safari para abrirlo.¿Cómo puedo cambiar el nombre de la extensión en una cadena con bash?

#!/usr/bin/env python 
import os.path 
import os 

oldName = $TM_FILEPATH 
(name, ext) = os.path.splitext(oldName) 
rename = name + ".html" 
os.system("open -a Safari %s" % rename) 

¿Cómo puedo cambiar la extensión de archivo con bash?

Respuesta

63
file=somefile.whatevs 
open -a Safari "${file%.*}.html" 
+3

Wow, esto es elegante. –

+0

Hay una buena explicación en [superusuario] (https://superuser.com/a/1119299/347427): "Cuando'% 'se usa en el patrón' $ {variable% substring} 'devolverá el contenido de la variable con la ocurrencia más corta de subcadena eliminada de la parte posterior de la variable ". – bcattle

0

Si por casualidad usted conoce la extensión que se puede cambiar de esta manera:

$ MY_FILE=file.html 
$ NEW_EXT=${MY_FILE/html/php} 
$ echo ${NEW_EXT} 
file.php 
+0

¿y si su nombre es my_html_file.html y quiero obtener my_html_file.php? – Sergei

+0

luego puede escribir la sustitución para que coincida con el punto que indica la extensión 'new_ext = $ {my_file/.html/.php}' – dinigo

Cuestiones relacionadas