• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[solved] Dateinamen eines ganzen Verzeichnisses umbenennen

Schakal

Newbie
Hi,

folgendes Problem, ich habe einige Dateien, bei denen man den Dateinamen ändern muss... Da es von Hand ziemlich langwierig ist (1000 Stück) habe ich mir überlegt, dies ein kleines Script für mich machen zu lassen.

So siehts aus:
Code:
-rw-r--r--    1 dxxx    users           0 2004-03-11 11:10 002 m e ine - d a t ei.dat
-rw-r--r--    1 dxxx    users           0 2004-03-11 11:10 007 meine - datei.dat
-rw-r--r--    1 dxxx    users           0 2004-03-11 11:09 01 me ine - d a tei.dat
-rw-r--r--    1 dxxx    users           0 2004-03-11 11:10 02 meine - datei.dat
Die Dateinamen sollen quasi verkürzt werden...

Jetzt hab ichs schonmal geschafft, die Dateinamen zu selektieren...
Code:
dxxx@lnx:~/dat> ll | cut -d ":" -f 2 | cut -d " " -f 3-100

m e ine - d a t ei.dat
meine - datei.dat
me ine - d a tei.dat
meine - datei.dat

Wenn ich dieses jetzt Zeilenweise anwenden könnte und den selektierten Dateinamen in eine variable schreibe, könnte ich mit einem "mv" dann die Dateien in ein anders Verzeichnis zb "moven" :)

ungefähr so:

Code:
var=1.Zeile von ll | cut -d ":" -f 2 | cut -d " " -f 3-100
mv /dat/002 m e ine - d a t ei.dat /umbenannt/$var

Das noch inne Schleife packn und fertig wärs... Leider bin ich jetzt kein guter Scriptcoder... Könnte mir jemand sagen wies vllt. besser geht oder mir bei meinem Lösungsansatz helfen??

Fetten Dank im voraus
Schakl
 

poiin2000

Member
Gib bitte Testnamen wie es aussieht und wie es später aussehen soll raus.

Sonst kann dir niemand helfen wenn das Ziel nicht klar definiert wird.

Ich habe dieses Problem aber schonmal gelöst ...

eventuell hilft es ja

Original geschrieben von poiin2000
Code:
find /home/poiin2000/Desktop/test/ -type f | awk '/(htm$|html$)/{print "cat "_$1_" | sed \"s/wegweg//g\" > "_$1 }' | $SHELL

Dieser Einzeiler entfernt diverse Textstellen in html-dateien
Anzupassen ist der pfad und das suchmuster "wegweg"

mfg p2k

Original geschrieben von poiin2000
Code:
find /daten/temp -type f | awk '/1.part.met.bak$/{print "mv \""_$0_"\" "_"\""_$0"\""}' | sed s/1.part.met.bak\"$/1.part.met\"/g | $SHELL

Umbennen von overnedaten bei absturz des client´s
Ziel : *.1.part.met.bak in 1.part.met umbennen.
/daten/temp/ ist auf das jeweilige Verzeichnis anzupassen.
Der rest sollte so stehen bleiben.

p2k

Original geschrieben von poiin2000
Code:
ls *jpg* -1 | awk '/.jpg./{print "mv \""_$0_"\" "_"\""_$0".jpg\""}' | sed s/jpg//2 |$SHELL
Wandelt mehrere Bilder von
Code:
3.jpg.56
2.jpg.126
1.jpg.316
in
Code:
3.56.jpg
2.126.jpg
1.316.jpg
um

mfg p2k

Original geschrieben von poiin2000
Code:
sed -e 's/A/\\46#65;/g' -e 's/B/\\46#66;/g' -e 's/C/\\46#67;/g' -e 's/D/\\46#68;/g' -e 's/E/\\46#69;/g' -e 's/F/\\46#70;/g' -e 's/G/\\46#71;/g' -e 's/H/\\46#72;/g' -e 's/I/\\46#73;/g' -e 's/J/\\46#74;/g' -e 's/K/\\46#75;/g' -e 's/L/\\46#76;/g' -e 's/M/\\46#77;/g' -e 's/N/\\46#78;/g' -e 's/O/\\46#79;/g' -e 's/P/\\46#80;/g' -e 's/Q/\\46#81;/g' -e 's/R/\\46#82;/g' -e 's/S/\\46#83;/g' -e 's/T/\\46#84;/g' -e 's/U/\\46#85;/g' -e 's/V/\\46#86;/g' -e 's/W/\\46#87;/g' -e 's/X/\\46#88;/g' -e 's/Y/\\46#89;/g' -e 's/Z/\\46#90;/g' -e 's/a/\\46#97;/g' -e 's/b/\\46#98;/g' -e 's/c/\\46#99;/g' -e 's/d/\\46#100;/g' -e 's/e/\\46#101;/g' -e 's/f/\\46#102;/g' -e 's/g/\\46#103;/g' -e 's/h/\\46#104;/g' -e 's/i/\\46#105;/g' -e 's/j/\\46#106;/g' -e 's/k/\\46#107;/g' -e 's/l/\\46#108;/g' -e 's/m/\\46#109;/g' -e 's/n/\\46#110;/g' -e 's/o/\\46#111;/g' -e 's/p/\\46#112;/g' -e 's/q/\\46#113;/g' -e 's/r/\\46#114;/g' -e 's/s/\\46#115;/g' -e 's/t/\\46#116;/g' -e 's/u/\\46#117;/g' -e 's/v/\\46#118;/g' -e 's/w/\\46#119;/g' -e 's/x/\\46#120;/g' -e 's/y/\\46#121;/g' -e 's/z/\\46#122;/g' -e 's/@/\\46#64;/g' -e 's/A//g' -e 's/B//g' -e 's/C//g' -e 's/D//g' -e 's/E//g' -e 's/F//g' -e 's/g//g' -e 's/H//g' -e 's/I//g' -e 's/J//g' -e 's/K//g' -e 's/L//g' -e 's/M//g' -e 's/N//g' -e 's/O//g' -e 's/P//g' -e 's/Q//g' -e 's/R//g' -e 's/s//g' -e 's/T//g' -e 's/U//g' -e 's/V//g' -e 's/W//g' -e 's/X//g' -e 's/Y//g' -e 's/Z//g' -e 's/a//g' -e 's/b//g' -e 's/c//g' -e 's/d//g' -e 's/e//g' -e 's/f//g' -e 's/g//g' -e 's/h//g' -e 's/i//g' -e 's/j//g' -e 's/k//g' -e 's/l//g' -e 's/m//g' -e 's/n//g' -e 's/o//g' -e 's/p//g' -e 's/q//g' -e 's/r//g' -e 's/s//g' -e 's/t//g' -e 's/u//g' -e 's/v//g' -e 's/w//g' -e 's/x//g' -e 's/y//g' -e 's/z//g' -e 's/@//g' | awk '{print "echo -e \"" $0"\""}' | $SHELL

Ein kleiner Einzeiler der sicher auch mittels gsub von awk haette geloesst werden koennen.
Wandelt Gross/Kleinbuchstaben sowie einige Sonderzeichen in ASCII Code um.

Eine moegliche anwendung waere das Verschluesseln von Emailadressen.


mfg poiin2000

mfg p2k
 
A

Anonymous

Gast
Hi,

Danke erstma für deine Antwort... Leider kann ich noch nicht wo wirklich was damit anfangen...
So wie in meinem ersten Codebeispiel sehen die Dateien im Moment aus und so wie der Output im 2. Codebeispiel sollen sie mal aussehen!

MfG
Schakal
 

kroe

Member
Schakal schrieb:
folgendes Problem, ich habe einige Dateien, bei denen man den Dateinamen ändern muss... Da es von Hand ziemlich langwierig ist (1000 Stück) habe ich mir überlegt, dies ein kleines Script für mich machen zu lassen.

Dafür gibt es schon fertige Programme:
an der Konsole: mmv
als gui: krename

beide bei SuSe dabei

Gruß
kroe
 
Oben