Zum Inhalt springen

Skript zum umbennen der Ordnernamen


c-i-k-o

Empfohlene Beiträge

Hallo Zusammen,

als Neuling in der Linuxumgebung habe ich folgendes Problem:

Wir sind gerade dabei unser Fileshare von einem Linux OS in ein Win OS umzuziehen. Jetzt meckert die Windowsumgebung, wenn im Ordnernamen Punkte vorkommen. Diese kommen aber fast in jedem Ordnernamen vor. 

Bsp. www.bla.de/bla_bl.de/bla.bla.com ... usw. 

Die Ordnernamen einzeln händisch umzubenennen wäre IT zu Fuß und so ziemlich aufwendig. 

Jetzt habe ich versucht ein Script zu schreiben, komme aber nicht wirklich weiter.

Mein Skript sieht wie folgt aus:

#!/bin/bash

for i in ` find . -type d -name "*.*"` # finde alle ordner die einen Punkt im Namen haben
do
   echo $i      # gebe ordnernamen aus 
   sed -e 's/'.'/''/g'  # und ersetze im Ordnernamen $i Punkt durch Leerzeichen
   # ich habe an dieser stelle auch diese Zeile versucht: ${i /.//}   - klappt aber auch nicht
   
 done

mein Ansatz ist: ich will die Ordnernamen in eine Stringvariable schreiben und diesen mittels der Variable umbennen, indem ich die Zeichen ersetze. Ich habe natürlich schon im Forum gesucht und natürlich auch schon gegoogelt, leider komme ich nicht weiter. 

Freue mich schon auf eure Hilfe. Besten Dank im Voraus.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi, 

danke carstenj.

ich habe es jetzt versucht wie du es vorgeschlagen hast.

sieht jetzt so aus

#!/bin/bash

for i in ` find . -type d -name "*.*"`
do
   echo $i  | sed -e 's/\./ /g'

done

aber irgendwie will es trotzdem nicht. die Punkte werden zwar ersetzt durch Leerzeichen und ausgegeben aber gespeichert wird das ganze nicht :/

Bearbeitet von c-i-k-o
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

was genau soll denn passieren? Wenn du die Dateien tatsächlich umbenannt haben möchtest, musst du...

  • Zuerst die neuen Name generieren (hast du getan)
  • mit dem Kommando "mv" die alten Dateien umbennnen (aber das würde ich vorher intensiv testen, denn wenn du das im falschen Verzeichnis aufrufst und/oder die falschen Dateien erwischt, kann das böse enden)
  • TIPP: Rufe "find" mit dem entsprechenden Verzeichnis auf (als Beispiel /var/www/html/):

    find /var/www/html/ -type d -name "*.*"

     

Überhaupt würde ich davon abraten, einfach mal so Dateien umzubennen, es sei denn die werden ausschließlich von Windows benutzt (bzw. du weisst genau, dass das keine Auswirkungen auf das System hat!!!).

Bearbeitet von carstenj
Link zu diesem Kommentar
Auf anderen Seiten teilen

so jetzt habe ich das Restultat des sed-Kommandos in eine Variable geschrieben:

#!/bin/bash

for i in ` find . -type d -name "*.*"`
do
   new_dirname=$(echo "$i" | sed -e 's/\./_/g')
   mv $i $new_dirname
done

und kriege folgende Fehlermeldung:

mv: Insufficient arguments (1)
Usage: mv [-f] [-i] f1 f2
       mv [-f] [-i] f1 ... fn d1
       mv [-f] [-i] d1 d2
mv: cannot rename .... to .... : No such file or directory

 

Bearbeitet von c-i-k-o
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

das Problem ist, dass du nun Dateien findest wie z.B.: ./.blah findest und dann nach _/_blah umbennen möchtest. Das geht aber nicht, weil es kein Verzeichnis namens _ gibt. Daher nochmal als Hinweis: Statt find . nimm find /verzeichnis/xyz.....

Aber nochmal: Überhaupt würde ich davon abraten, einfach mal so Dateien umzubennen, es sei denn die werden ausschließlich von Windows benutzt (bzw. du weisst genau, dass das keine Auswirkungen auf das System hat!!!). Und vorher ein Backup machen.

Bearbeitet von carstenj
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Carsten,

genau das ist mir gerade auch eingefallen, leider nachdem ich schon so lange gezweifelt habe :/

Es hat mit dem find /verzeichnis/xyz... geklappt. 

Danke für den Hinweis - ich muss sie abändern, weil das Windows-Share die Ordnernamen in der Form nicht akzeptiert. Die Dateien habe ich in diesem Fall nicht angefasst nur die Ordnernamen. Backup habe ich sicherheitshalber abgelegt. 

 

Besten Dank für deine Unterstützung :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...