brauch hilfe bei einem script

B

Barashnukor

Grünschnabel
Hallo!

Ich bin leider ganz neu auf der unix seite unterwegs, und braeuchte jetzt mal kurz eure hilfe bei einem fuer euch sicher leichtem script.

und zwar ist die ausgangssituation so, dass ich einen ordner habe. in diesem ordner befinden sich mehrere datein, die im mittleren teil ihres namens einen immer gleich bleibenten namensteil haben. und diesen muss ich umbenennen.

also z.b. xxx789s1fff.txt
und fff789s1zzz.txt

und ich muss aus dem 789s1 teil jetzt 33333 machen, und das bei allen datein in dem ordner. und dazu braeucht ich jetzt eure hilfe.

also dass ich mit find beginnen muss, dass war mal meine erste ueberlegung, aber danach klatscht es mich irgendwie im kopf auf, wie es weiter gehen koennte.

vielen dank im vorraus!

mfg
 
Wenn es alle Dateien in einem Ordner betrifft einfach
Code:
sed 's/789s1/33333/g' /Pfad/zum/Ordner/*
Wenn du mit find anfangen musst hilft dir die Option -exec Kommando weiter.

grEetZ
 
Zuletzt bearbeitet:
es sind nicht alle, leider nur einige. also so 10%
 
Wie gesagt, dann übergibst du das Kommando mit find und exec.
 
wie gesagt, ich bin kompletter anfaenger, wenn du mir das vl etwas genauer sagen koenntest wie das gehen sollte, waere ich dir sehr dankbar!
 
hmm.. anscheinend liegt der fehler bei mir, hab mich wohl nicht gut genug artikuliert :D

also, das script brauch ich nur jetzt damit ich mich nicht durch 10 000 files durchakern muss.

also ich dachte mir ich wechsle einfach in das verzeichnis und mach dann mal ein:

find *807*

dann sollte ich ja mal alle datein erhalten die umbenannt werden sollten. wenn ich dein comando ausfuehre, dann schmeisst es mich das erste mal bei dem sed befehl, da erkennt er das -i anscheinend nicht.

sed: not a recognized flag: i war die antwort des systems.

wenn ich das -i weglasse, dann wird der befehl zwar ausgefuehrt, aber er aendert genau 0.

was bei mir im kopf irgendwie probleme ausloest, ist die tatsache, dass die dateinamen ja so sind, dass in der mitte was geaendert wird, und er den rest gleich behalten soll. aber irgendwie muss das ja gehen.
 
*hust* Du willst ja Dateinamen ändern und nicht den Inhalt von Dateien :D
Code:
for i in *789s1*; 
do mv $i $(echo $i | sed 's/789s1/33333/'); 
done;
 
Hallo
Von welcher Shelll bzw. OS reden wir?

Wenn es alle Dateien in einem Ordner betrifft einfach
Code:
sed 's/789s1/33333/g' /Pfad/zum/Ordner/*
Wenn du mit find anfangen musst hilft dir die Option -exec Kommando weiter.

grEetZ
Hier geht es nicht um den Inhalt der Dateien, sondern den Namen. Insofern ist dein Vorschlag wenig hilfreich.
Wenn wir von der bash reden, Schnellschuß ungetestet:
Code:
find /path/to/files -type f -name "*789s1*"|while read file; do echo $file ${file/789s1/33333}; done
echo halt durch mv ersetzen, wenn alles richtig funktioniert.

Gruß Wolfgang
 
genau das wars, was ich wollte!

super mega thx!

mfg
 
Hier geht es nicht um den Inhalt der Dateien, sondern den Namen. Insofern ist dein Vorschlag wenig hilfreich.
[...]
Gruß Wolfgang

Ist mir dann auch aufgefallen und hab mich ja korrigert. Hatte noch keinen Kaffee :D
Aber mit der for Schleife geht das auch und ist nicht ganz so viel Tipperei.
 

Ähnliche Themen

Heimserver Konfiguration für Ubuntu Server?!

Samba Server per Script ohne Internet installieren

Samba Update von 3.2.5 auf 3.5.6 - Probleme beim Server Browsen

Nutzerrechte in Samba 3.2

FTP-get Shell Script

Zurück
Oben