Linux: Mehrer Dateien umbennen mit System


Screeny

Well-Known Member
Joined
Oct 14, 2008
Messages
4,045
Hey, für euch Linux Gurus wird dies sicherlich ein Klacks :D

Ich habe folgende Dateien:

test?.ds=2839829.tm
test?.ds=28ewr29.tm
test?.ds=14325s4.tm
test?.ds=oidn39dw.tm

Und möchte die Anfangsphrase 'test?.ds=' gerne weghaben, also dann nur noch den reinen Dateinamen :)
Das Ganze sollte unter Debian realisierbar sein, nur wie?
Hat jemand nen Script oder ein cmd für mich? :)

Später soll das halt so aussehen:
2839829.tm
28ewr29.tm
14325s4.tm
oidn39dw.tm
 
Ich hab's versucht, dachte das könnte ich doch - soll mir doch gleich einer dieser "Linux Gurus" sagen, was daran falsch ist:
Code:
rename 's/test?\.ds=//' test?.ds=*

Gut dass ich schnell die von Screenys genannten Dateien erstellt ( touch test?.ds=2839829.tm test?.ds=28ewr29.tm test?.ds=14325s4.tm test?.ds=oidn39dw.tm ) und es ausprobiert habe.
Es gibt, keine Fehlermeldung, es tut einfach so als ob "test?.ds=*" auf nichts passen würde.
 
Ich zähle mich zwar nicht als linux Guru (vielleicht in 1000000 Jahren mal ;) ) hab aber im Internet den passenden Befehl rausgesucht und angepasst.
Code:
for f in test?\.ds=*; do mv "$f" "${f#test?\.ds=}"; done
 
T4b said:
Ich hab's versucht, dachte das könnte ich doch - soll mir doch gleich einer dieser "Linux Gurus" sagen, was daran falsch ist:
Code:
rename 's/test?\.ds=//' test?.ds=*
Das Fragezeichen ist im regulären Ausdruck ein Platzhalter. Setz da auch mal ein Backslash vor.
 
Hi Screeny,

für den Fall, dass Du einen KDE zur Verfügung hast, kannst Du auch KRename nehmen.
http://www.krename.net
Ich weiß jetzt nicht, ob das für Debian als Paket vorliegt, und Du brauchst halt 'ne grafische Oberfläche, also eher nichts für die Serververwaltung.
Aber wenn es läuft, ist es sehr flexibel und leistungsfähig und recht einfach zu bedienen. Ich habe mich ohne Anleitung in einigen Minuten zurechtfunden.

Viel Erfolg,

kasi
 
da ich, wie gesagt, einen server als system nutze, muss ich ohne KDE & Co auskommen ;)
 
Morchel said:
T4b said:
Ich hab's versucht, dachte das könnte ich doch - soll mir doch gleich einer dieser "Linux Gurus" sagen, was daran falsch ist:
Code:
rename 's/test?\.ds=//' test?.ds=*
Das Fragezeichen ist im regulären Ausdruck ein Platzhalter. Setz da auch mal ein Backslash vor.
Mist, stimmt, hab ich vergessen. :dash:
Also so:
Code:
rename 's/test\?\.ds=//' test?.ds=*
Das geht.
 
Ja, geht wirklich :)
Wie mach ich das denn, wenn die Datei jedoch 'dl.pl?=irgendwas.test.xyz' heißt und ich nur 'irgendwas.test.xyz' haben will? Kann mir da jemand vielleicht mal ein Muster geben? Danke :)
 
Du möchtest regular expressions bzw. reguläre Ausdrücke lernen.
Naja, von lernen wollen kann keine Rede sein :D
Eigentlich will ich nur eine Menge Dateien umbenennen ^^
 
So dachte ich auch mal. Man will ja nur... Nur will man immer öfter. Ich verstehe Deinen Widerstand schon, habe mich schliesslich selbst gesträubt und auch zu Anfang schwer getan. Ein regex Guru bin ich mit Sicherheit nicht und ich habe Dir auch keinen o'reilly über 500 Seiten empfohlen. Aber wenn Du die Grundlagen drauf hast, kannst Du Dir die obige Vorlage ohne Probleme auf veränderte Anforderungen umstellen.
 
Um dir deine Frage noch zubeantworten muss man einwenig ausholen.

Ich nehm den Befehl jetzt mal als Bsp.
Code:
rename 's/test\?\.ds=//' test?.ds=*

rename ist der Linux-Befehl - eh klar.
So jetzt kommen wir zu den Parametern, fangen wir mal von hinten an, rename wird auf alle Dateien angewandt die test?.ds=* heißen - vermutlich auch klar.
Jetzt zu dem wichtigen und interessantem teil
s heißt am Anfang, der Slash ist hier das Trennzeichen, jetzt suchen wir am Anfang des Namens nach test?.ds=.
Punkt und Fragezeichen wurden durch einen Backslash escapt da wie schon gesagt wurde sie RegEx-"Befehle" sind.
So nachdem nun folgenden Slash könntest du den Text durch (test?.ds=) ersetzen durch zB test?ds= oder dergleichen.

Somit muss dein gesuchter Befehl so aussehen:
Code:
rename 's/dl\.pl\?=//' dl.pl?=*

Hoffe das war verständlich und ich hab nix übersehen, falls doch sagts einfach.
 
Screeny said:
da ich, wie gesagt, einen server als system nutze, muss ich ohne KDE & Co auskommen ;)

Irrtum. X11 ist netzwerktransparent. Das ist eines seiner konzeptionellen Grundlagen.

Das heißt, dass der X-Client (das Anwendungsprogramm) nicht am selben Rechner wie der X-Server laufen muss.
Läuft bei dir lokal ein X-Server, also irgend ein Unix mit X oder z.B. Windows mit Cygwin, dann genügt ein "ssh -X", um dessen Display einfach weiterzuleiten. Dann kannst du beliebige X-Programme am Zielrechner aufrufen und dessen graphische Ausgabe erscheint bei dir am Rechner Zuhause.

Sollten nicht nur einzelne Apps, sondern ein ganzer Desktop erwünscht sein, dann empfehlen sich Protokollerweiterungen wie NX.

Dem Vorschlag, sich generell mal mit RegExp auseinanderzusetzen, kann ich ebenfalls nur zustimmen. Man begegnet ihnen an diversen Stellen, an denen etwas Kenntnis darüber von Vorteil sein kann. Sed, Awk +co. können sehr mächtige Tools sein. Wenn man sich ein wenig damit auskennt, dann können sie einem die Arbeit ungemein erleichtern. Das heißt: die erste Benutzung erfordert zwar einen großen Lernaufwand, aber das rentiert sich im Laufe der Zeit mehr als nur einfach.
 
@hede,

ich hatte das eher so verstanden, dass man bei den meisten Servern aus Performance-Gründen schlicht gar nicht erst einen X-Server laufen lässt, da er i.d.R. nicht erforderlich ist.

Oder sehe ich das falsch?

Gruß

kasi
 
Hehe, ja. Ich hatte mich wohl etwas missverständlich ausgedrückt. Darauf hatte mich auch schon jemand per PN hingewiesen.

Ich meinte eben den X-Server lokal und nicht auf der Remote-Maschine, also auf dem Server, laufen zu lassen. Da spielt es also keine Rolle, wie schwach die Servermaschine ist. Sie braucht z.b. keine Grafikkarte o.ä.

Sie sollte natürlich generell stark genug sein, das Programm, das man dort starten möchte, auch ausführen zu können. Das Programm läuft immerhin am Server, nur das Bild wird lokal vom lokalen X-Server gerendert. Die Grafikpuffer liegen somit zwar nicht am Server. Aber KDE und Firefox etc. brauchen nicht nur auf dem X-Server Leistung, sondern eben auch da, wo das Programm selber läuft.

Und NX (als Beispiel) braucht sowieso Serverleistung, da in dem Fall auch dort ein X-Server läuft. Auch wenn der sich dann Node oder so schimpft.

Aber die Leistung wird auch nur dann gefordert, wenn man sich anmeldet. So lange niemand angemeldet ist, läuft ja auch kein X-Client (am Server) und es werden keine Serverressourcen verbraucht.
 
Back
Top