Hallo Linux-Profis,
ich habe kaum Linux-Erfahrung und versuche ein Skript zu schreiben, was folgendes erledigen soll.
Also, ich habe in einem Verzeichnis sehr viele Dateien. Diese heißen z.B. blah1, blah2, blah3, ..., blah27, foo1, foo2,..., foo27 usw. Die Dateinamen bestehen also i.a. aus einem Text-Präfix und Zahlen-Suffix. Das Skript sollte folgendes tun:
1) Verzeichnisse erstellen, die folgend aussehen: 1.01, 1.02, ..., 1.27
2) Alle Dateien anhand deren Namen in die entsprechenden Verzeichnisse verschieben und dabei das Suffix löschen. z.B. mv blah27 1.27/blah; mv foo2 1.02/foo usw.
Was ich mir bis überlegt habe sieht ungefähr so aus:
Natürlich funktioniert dieses Skript nicht. Schon in der ersten Zeile "for ((i=27;i>=1;i--))" bekomme ich die Fehlermeldung
, wenn ich das Skript in eine Datei reinschreibe und dann mit sh ./script.sh ausführe. Dieso for-Schleife habe ich ergoogelt. Lustigerweise funktioniert die for-Schleife, wenn man sie direkt in die Kommandozeile eingibt.
Hier ist z.B. das Minimalbeispiel für die for -Schleifen (copy-paste aus dem Netz):
Dieses Beispiel funktioniert in der Kommandozeile und verursacht den oben genannten Fehler, wenn ich aus mit sh ./script.sh ausführe.
Ich weiß, es ist 'ne Menge Zeug. Deswegen freue ich mich auf jeden Hinweis und Topp, was ihr habt und erwarte keine Fertiglösung.
Grüße
ich habe kaum Linux-Erfahrung und versuche ein Skript zu schreiben, was folgendes erledigen soll.
Also, ich habe in einem Verzeichnis sehr viele Dateien. Diese heißen z.B. blah1, blah2, blah3, ..., blah27, foo1, foo2,..., foo27 usw. Die Dateinamen bestehen also i.a. aus einem Text-Präfix und Zahlen-Suffix. Das Skript sollte folgendes tun:
1) Verzeichnisse erstellen, die folgend aussehen: 1.01, 1.02, ..., 1.27
2) Alle Dateien anhand deren Namen in die entsprechenden Verzeichnisse verschieben und dabei das Suffix löschen. z.B. mv blah27 1.27/blah; mv foo2 1.02/foo usw.
Was ich mir bis überlegt habe sieht ungefähr so aus:
Code:
#!/bin/bash
for ((i=27;i>=1;i--)) # Schleife rückwärts, damit z.B. Dateien mit Suffix "23" nicht als Dateien mit Suffix "3" erkannt werden
do
mkdir 1.$i # erstelle das entsprechende Verzeichnis
mv *$i 1.$i # verschiebe die Dateien ins Verzeichnis
cd 1.$i
# an dieser Stelle muss ich irgendwie alle Dateinamen in ein Liste "filenamelist" zusammenfassen
for filename in $filenamelist
do
mv $filename ${filename}//${i} # lösche das Suffix $i
done
cd ..
done
Zitat:
Syntax error: Bad for loop variable |
Hier ist z.B. das Minimalbeispiel für die for -Schleifen (copy-paste aus dem Netz):
Code:
for ((i=9;i>=1;i--))
do
echo "Welcome $i times"
done
Ich weiß, es ist 'ne Menge Zeug. Deswegen freue ich mich auf jeden Hinweis und Topp, was ihr habt und erwarte keine Fertiglösung.
Grüße