¿Cómo puedo cambiar el nombre de archivos con títulos como Stargate SG-1 Season 01 Episode 01 simplemente «s01e01»? Variable de numeración de curso.
Ya tengo algo como esto:

for file in *.mkv; do mv "$file" "$(echo "$file" | sed -e "REGEX HERE")

Solo necesito el comando sed que hace lo que necesito.

Gracias

Ver pregunta relacionada con la stackoverflow.com/questions/10445934/change-multiple-files
esa pregunta es acerca de cambiar el contenido de varios archivos, esta pregunta es acerca de cambiar el nombre de varios archivos.

OriginalEl autor Gonçalo Silva Santos | 2013-06-16

4 Comentarios

  1. 9

    Sin necesidad de sed, intente esto:

    #!/bin/bash
    
    for f in *.mkv;
    do
        set -- $f
        mv "$f" se
    done
    

    en acción:

    $ ls
    Stargate SG-1 Season 01 Episode 01.mkv
    
    $ ./l.sh 
    
    $ ls
    s01e01.mkv
    
    Él pidió sed. ¿Cómo sabes que él no necesita sed? Este ejemplo puede ser solo un caso, y que puede tener una gran cantidad de otras personas con la voluntad de la necesidad sed. También, su respuesta es depende bash y él puede ser el uso de otro shell.
    así, OP aceptado la respuesta así que supongo que resolvieron los problemas. Si usted piensa que usted tiene una solución mejor, publicar y ver qué pasa 🙂
    Siendo el OP no lo hace el árbitro final de la verdad, y una respuesta de ser aceptado no significa que era bueno, de hecho no quiere decir que lo era aún una respuesta.

    OriginalEl autor Fredrik Pihl

  2. 3

    GNU sed

    for file in *.mkv; do mv "$file" "$(echo "$file" | sed -e 's/.*\(\S\+\)\s\+\S\+\s\(\S\+\)$/se/')
    

    OriginalEl autor Endoro

  3. 2

    Awk también es bueno para este

    for file in *.mkv; do
       mv "$file" $(awk '{print "s", $4, "e", $6}' <<<$file).mkv
    done
    

    Creo que este no es un problema para la sed 🙂

    OriginalEl autor bartimar

  4. 0

    Me gustaría ir por este camino para cambiar el nombre de todos *.archivos mkv:

    ls *.mkv | awk '{print "mv \"" $0 "\" s" $4 "e" $6}' | sh

    o

    ls *.mkv | awk '{print "\"" $0 "\" s" $4 "e" $6}' | xargs mv

    OriginalEl autor Jose

Dejar respuesta

Please enter your comment!
Please enter your name here