Tengo este directorio y quiero cambiar el nombre de los archivos:
===> ls -1 Der-vierte-Weise/
10 - 10 - Erkenntniss.ogg
1 - 01 - Hoffnung.ogg
11 - 11 - Wahrheit.ogg
12 - 12 - Dankbarkeit.ogg
13 - 13 - Kredits.ogg
2 - 02 - Familie.ogg
3 - 03 - Demut.ogg
4 - 04 - Freude.ogg
5 - 05 - Schoenheit.ogg
6 - 06 - Solidaritaet.ogg
7 - 07 - Entscheidung.ogg
8 - 08 - Hilfe.ogg
9 - 09 - Unterstuetzung.ogg
El resultado debería verse así:
===> ls -1 Der-vierte-Weise/
01 - Hoffnung.ogg
02 - Familie.ogg
...
Me gustaría resolver esto con herramientas comunes de shell.
command-line
bash
batch-rename
guettli
fuente
fuente
Respuestas:
Podrías usar
rename
...Eliminar
-n
después de probar para cambiar el nombre de los archivosExplicación
s/old/new/
reemplazarold
connew
^
inicio de cuerda[0-9]+
algunos numerosfuente
rename
herramienta. ¿Utiliza PCRE? ... sería genial.rename
es un script de Perl, por lo que tiene soporte completo de expresión regular de Perl; PCRE es solo un subconjunto de eso. Sin embargo, cualquier cosa que sepa de PCRE será aplicablerename
.rename
tiene expresiones regulares compatibles con perl. Sí, la implementación de pcre no se usa. Entendí esto :-) Gracias por su rápida respuesta.bash
expansión de parámetros para quitar la porción requerida desde el inicio:Forma expandida:
echo
es para correr en seco; deshazte de él para la acción real:Ejemplo:
fuente
rename
comando. (Se necesita menos escritura).rename
es el camino a seguir si está familiarizado con PCRE; larename
respuesta ya estaba dada, así que hay que moverse con purobash
. Solo para tener en cuenta,python
el módulore
(oregex
) no es totalmente compatible con PCRE BTW.${f#[[:digit:]]*-[[:blank:]]}
es feo. Si, funciona. Pero vivimos en el siglo XXI. Creo que es hora de cambiar de "funciona" a "es fácil y divertido". Si el objetivo es "funciona", entonces Linux nunca perderá el prejuicio de no ser fácil de usar. Como ya obtuviste muchos votos positivos, este voto negativo no debería doler (espero). Si es así, dígame y lo recuperaré.[[:digit:]]
y si[[:blank:]]
estaban allí para cumplir con tulocale
, estos también son bastante comunes en Regex.