2010-12-22 8 views
1

Ich versuche, den Umbenennen Befehl in einem Terminal in Ubuntu zu verwenden, um eine Zeichenfolge an den Anfang einiger AVI-Dateinamen wie folgt anzufügen.Linux Umbenennungsfunktion wird nicht korrekt verwendet

rename -n 's/(\w)\.avi$/String_to_add__$1\.avi/' *.avi 

So erwarte ich folgendes:

String_to_add_MyMovie.avi 

Problem ist, dass wenn ich den Befehl ausführen es die Zeichenfolge an das Ende des Dateinamens anfügt, so dass ich am Ende mit den folgenden:

MyMovie_String_to_add_.avi 

Ich bin mir nicht sicher, ob ich die Perlexpr-Syntax falsch oder etwas anderes habe. Jeder Einblick wird geschätzt.

UPDATE:

Danke für die Vorschläge, habe ich versucht, die Vorschläge von alno und plundra und machte folgende Änderung:

rename -n 's/(\w+)\.avi$/String_to_add__$1\.avi/' *.avi 

Aber jetzt ist die Datei erhält die Zeichenfolge in der Mitte des Namens eingefügt wie folgt:

My_String_to_add_Movie

ich entschuldige mich aber vernachlässigt ich zu erwähnen, dass die Titel von 3 vorangestellt werden numerische Werte, so ist die Dateinamensnomenklatur {3 numbers}-My_Movie.avi so zum Beispiel 001-My_Movie.avi. Aber ich dachte nicht, dass dies einen Unterschied machen würde, da ich annahm, dass \w+ mit alphanumerischen Zeichen übereinstimmt, könnte das "-" das Problem sein?

Ich habe noch nicht versucht Christian Ansatz, ich möchte in der Lage sein, den Umbenennen Befehl zu verwenden, oder zumindest verstehen, warum es nicht funktioniert, bevor ich einen anderen Ansatz versuchen.

Antwort

2

Ich glaube nicht, Rename -n ist Standard. Sie können dies tun:

for i in *.avi; do mv $i String_to_add_$i; done 
+0

Für eine einfache Sache wie das Voranstellen einer Zeichenkette an einen Dateinamen ist dies der offensichtliche Weg, ja. Obwohl Sie Ihre Quelle und Ihr Ziel angeben möchten ("$ i"). – plundra

+0

Als Standard nehme ich an, dass er Debian oder Ubuntu benutzt, wobei die 'rename'-Alternative auf' prename' verweist (wie in perl rename), die mit dem Paket 'perl' geliefert wird. Also würde ich * denken * es ist ziemlich üblich auf Debian-ähnlichen Systemen, obwohl ich "Vornamen" verwenden würde, anstatt sich auf eine Alternative zu verlassen, die korrekt eingestellt ist. – plundra

1

Sie sind nur ein einzelnes Zeichen mit \w passend, Sie \w+ wollen, so dass die komplette Linie wäre:

rename -n 's/(\w+)\.avi$/String_to_add__$1\.avi/' *.avi 
1

korrekte Version:

rename -n 's/(\w+)\.avi$/String_to_add__$1\.avi/' *.avi 

Sie haben einfach + nach \ w vergessen, also hat es versucht, nur ein Zeichen zu finden.

Verwandte Themen