• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst]Verzeichnisse umbenennen

marbas13

Hacker
Hallo,

Ich weiß, ich müsste es langsam wissen, aber....

ich hab eine Menge Verzeichnisse, deren Namen der Schablone yyyy-mm-tt entsprechen. Aus denen hätte ich jetzt gerne die - entfernt, sodass die Namen dann yyyymmtt sind. Und das für alle Unter-Verzeichnisse in einem Verzeichnis. Nicht rekursiv.
Kann mir jemand helfen, mit einem coolen rename Befehl oder einer netten Schleife?

Vorab vielen Dank schon mal!
 

abgdf

Guru
Du kannst es mit krename probieren.

Oder das hier versuchen:
Code:
#!/bin/bash

find . -type d | while read i
do
    a=$(dirname $i)
    b=$(basename $i)
    c=$(echo "$b" | sed s/-//g)
    echo "$a/$c"
    # mv "$a/$b" "$a/$c"
done
Gruß
 
A

Anonymous

Gast
von solchen Befehlen und Beispielen sollte das Forum hier mittlerweile schon gut gefüllt sein, da solche Probleme öfter kommen. Mal die Suchfunktion verwenden.
der Befehl hier sollte auch funktionieren.
Code:
find -maxdepth 1 -type d -name "*-*" | while read DIR ; do echo mv -n $DIR $(echo $DIR | sed 's/-//g'); done
zeigt erst mal nur an was der Befehl machen würde. zum scharf schalten das "echo" aus der Zeile entfernen.

ist im Prinzip genau das selbe wie oben nur in einer Zeile und "nicht rekursiv" und läßt Verzeichnisnamen ohne "-" in Frieden und will sie nicht in sich selbst umbenennen. ;)
bleibt aber hängen wenn zusätzlich noch Leerzeichen im Dateinamen sind. Dann sicherer wenn man bei find etwas genauer sucht zB mit " -name "????-??-??" "


robi
 

abgdf

Guru
robi schrieb:
ist im Prinzip genau das selbe wie oben nur in einer Zeile und "nicht rekursiv" und läßt Verzeichnisnamen ohne "-" in Frieden und will sie nicht in sich selbst umbenennen. ;)
Ähh, ja :ups:. Hätte ich wohl oben noch
Code:
if test "$b" != "$c"; then mv ... fi
einfügen müssen.
 
OP
M

marbas13

Hacker
Prima, beides hat funktioniert. Und ich hab auch beides verstanden. Nur selber hätte ich es nicht hingekriegt.
Vielen Dank!
 
Oben