Bin gerade irgendwie zu blöd zum googeln oder habe einfach den falschen Begriff im Kopf. Ich suche einfach ein kleines Programm, was mir (am besten nach definierbaren Regeln) Dateien so umbenennt, dass die Namen nur noch X Stellen haben und kein Name doppelt vorkommt.
-
-
sowas ?:
let x=1 ; ls |while read file; do mv $file $x; let x=x+1; done
-
Oder wenn es führende Nullen haben soll:
let x=1 ; ls |while read file; do mv $file `printf "%04d" $x` ; let x=x+1; done
-
Mh. Ich wurschtel mich gerade mit rename durch:
Hab die Dateien jetzt erstmal von runden Klammern, Kommatas und Leerzeichen befreit.Jetzt würde ich gerne einfach noch jeden Dateinamen auf die ersten 9 Zeichen + die letzten 6 Zeichen reduzieren.
@alvin:
Na, das war wohl nix. Da wurde die Dateinamen ja einfach nur durch Nummern ersetzt. Mit "Stellen" meine ich natürlich die ursprünglichen. -
> Mit "Stellen" meine ich natürlich die ursprünglichen.
wie meinst du das hast du ein Beispiel ?
-
Naja, reichen würde mir schonmal, wenn einfach am Ende eine Zahl auftauchen würde, wenn die Dateien bei X-Stellen den gleichen Namen hätten:
z.B.Sagen wir, ich will die auf 15 Stellen kürzen (will ich ja auch, fürs MMCR), dann sollte eben sowas rauskommen:
oder aber eben noch besser:
Also 9 Stellen vom Anfang + 6 Stellen vom Ende.
-
Vielleicht hilf es Elite gegen nichts zu ersetzen?
ls |while read file; do mv $file ${file/Elite/} ; done
-
Hehe... Neenee, dann kann ich ja gleich alles "per Hand" machen. Will die komplette TOSEC-prg Sammlung nach dem Schema umbenennen
-
> Also 9 Stellen vom Anfang + 6 Stellen vom Ende.
voila:
ls |while read file; do mv $file ${file:0:9}${file:13:21} ; done
-
jau, SUPER! das kommt der Sache schon verflucht Nahe.
Hier mal das Auszug aus dem Ergebnis, bei Anwendung auf ein Verzeichnis:
Code- 0andX1987edSoftware.prg 1994-TenYAfter1984VisionsSoftw 3DTimeTre3AnirogSoftware.prg
- 1.000Milex-[hTBT].prg 1994TenYefter19xxVisions.prg 3DVier-Get1984Markt&Technikde.
- 100MeterD9xx-[hTBT].prg 1Bundeslinager19xxOliverKupsde 3DWatersk4AlligataSoftware[h65
- 100MeterS19xx-[hUCD].prg 1stBonusG9xx-[b].prg 3DWatersk4AlligataSoftware[hAB
- 100MileRa86CommodoreMicrocompu 1stDivisinager1993Codemasters[ 3DWatersk4AlligataSoftware.prg
- 10-PinBow1984CDSMicrosystems[h 1stDiVSNMer1993Codemasters[crS 3D-Zoom19rkD.Rejhon[crTBT+FF].
- 10thFrameAccessSoftware[crDD][ 200119xxSseSoftware[crDatahack 3VoiceMusxxMarkus&IlkkaPirttim
- 10thFrameAccessSoftware[hDD].p 200219xxGSundin[hDins-DNS].prg 3WildBallxToniLuodeFi.prg
- 10thFrameAccessSoftware[hREM]. 201019xxWan.prg 45-Fourty1990MagicDisk[hAction
D.h. die Dateinamen sind immer noch 30 Zeichen lang und leider wird notfalls das ".prg" abgeschnitten.
EDIT:
Also mal ganz plump formuliert:
Nehme 9 Zeichen vom Dateinamen Anfang, suche nach .prg, nehme 6 Zeichen davor und packe die 9 Zeichen + 6 zeichen + Endung zusammen als neuen Namen. -
> Nehme 9 Zeichen vom Dateinamen Anfang, suche nach .prg, nehme 6 Zeichen davor und packe
> die 9 Zeichen + 6 zeichen + Endung zusammen als neuen Namen.testen
ls |while read file; do let y=${#file}-10; echo $file ${file:0:9}${file:$y} ; doneumbenennen
ls |while read file; do let y=${#file}-10; mv $file ${file:0:9}${file:$y} ; done -
Geil! Ich danke Dir
... Ich hab mich echt blöde gesucht im Netz!
EDIT:
Achso, bevor es noch mehr Leute gibt, die dann nix im Netz finden, hier ein alternativer Workaround, den ich vorhin anhand Deiner Beispiele gemacht habe:Gibt dann immer die ersten 11 Zeichen aus + "-XXX" wobei XXX eine dreistellige Zahl ist, die notfalls mit Nullen beginnt.