Re: Ordner umbenenenn (find, regexp und mv) leicht OT

From: Timm Wimmers <timm(at)ticore.de>
Date: Thu, 29 Jan 2009 14:50:23 +0100

Oliver Fromme schrieb:
> Also, das Entscheidende ist, die Trennstelle eindeutig zu
> identifizieren. Deiner Beschreibung nach würde ich sagen,
> dass der Ausdruck [-_ ][^0-9] eindeutig sein sollte, d.h.
> eines der Zeichen "-", "_" oder " " gefolgt von einem
> Zeichen, das keine Ziffer ist.

Ja, da habe ich Glück, es ist genau so wie du hier angenommen hast.

> Ist das soweit korrekt? Kommt diese Kombination sonst
> nirgends in den Dateinamen vor? Dann sollte folgendes
> gehen:
>
> find ... | while read SRC; do
> DST="${SRC%%[-_ ][^0-9]*}"
> mv "$SRC" "$DST"
> done

Danke! Das %% ist ziemlich abgefahren, hatte ich nicht auf den Zettel!
Ich habe jetzt folgendes gemacht:

find -E . -type d -mindepth 1 -maxdepth 2 \
        -regex '^.*[-][0-9]{2}[-][0-9]{4}.*$' | \
        while read SRC; do \
            DST="${SRC%%[-_ ][^0-9]*}"; \
            echo "Quelle: $SRC"; \
            echo "Ziel: $DST"; \
            echo ""; \
         done \
> ~/action_out.txt

Ergebnis (Auszug):

Quelle: ./2007/UI-07-6035 Jobbezeichnung
Ziel : ./2007/UI-07-6035

Quelle: ./2007/UI-07-6087 Job_Bezeichnung
Ziel : ./2007/UI-07-6087

Quelle: ./2007/UI-07-6096 Job Bezeichnung
Ziel : ./2007/UI-07-6096

Quelle: ./2007/UI-07-8246 Job-Bezei chnu_ng
Ziel : ./2007/UI-07-8246

Quelle: ./2007/UNIP-07-4811 Jöbbeßeichnüng
Ziel : ./2007/UNIP-07-4811

Das sieht doch schonmal ganz ordentlich aus; und hat für ca. 2650 Ordner
 auch nur einen Augenaufschlag benötigt. Erstmal heute Abend ein Backup
machen und dann lass ich das mal mit "mv" laufen.

Besten Dank Olli.

-- 
Timm
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Thu 29 Jan 2009 - 14:52:19 CET

search this site