Ordner umbenenenn (find, regexp und mv) leicht OT

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

Moin zusammen,

ein für mich ziemlich knifflige Aufgabe.

Gegeben sind eine beliebige Anzahl von Ordnern nach folgendem Schema:

"IRGENDEINKUNDE-01-1234 JOBBEZEICHNUNG"

Das Erkennungsmuster ist hier "-01-1234", der vordere Teil wird noch
benötigt, der hintere Teil soll abgeschnitten werden.

Die Ordner finde ich mit "find" mit folgendem Kommando (eine Zeile,
$SUCHPFAD ist beispielsweise das aktuelle Verzeichnis):

find -E $SUCHPFAD -type d -mindepth 1 -maxdepth 2 -regex
'^.*[-][0-9]{2}[-][0-9]{4}.*$'

Das funktioniert soweit und ich bekomme eine korrekte Liste von
Ordnernamen in etwa wie folgt:

./2007/UI-07-4012 Jobbezeichnung_Zu_4012
./2007/UI-07-4035 Jobbezeichnung_Zu_4035
./2007/UI-07-4087 Jobbezeichnung_Zu_4087
./2007/UI-07-4096 Jobbezeichnung_Zu-4096
./2007/UI-07-4246 Jobbezeichnung_Zu_4246

Ich möchte jetzt jeden einzelnen Ordner umbenennen und zwar soll aus
"./2007/UI-07-4012 Jobbezeichnung_Zu_4012" ein "./2007/UI-07-4012"
werden, der hintere Teil wird also abgeschnitten (wobei das führende
Leerzeichen manchmal auch ein "_" oder ein "-" sein kann.

Wenn der erste Teil (IRGENDEINKUNDE, im Beispiel hier "UI") ein feste
Länge hätte würde ich selbst zurecht kommen, aber das kann zwei oder
auch bis zu 30 Zeichen lang sein.

Wie baue ich die Parameter für das mv kommando zusammen um beipielsweise
folgendes zu erhalten?

timm$ mv "./2007/UI-07-4012 Jobbezeichnung_Zu_4012" "./2007/UI-07-4012"

Wie müsste ich ungefähr vorgehen? sed? awk?

Fragt sich,
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 - 10:29:33 CET

search this site