.sh rm - entfernen von doppelten Dateien

.:L

0
Hallo HaBo,

zum entfernen doppelt und dreifacher Dateien habe ich mir versucht ein script zu schreiben das wie folgt aussieht:

Code:
#/bin/bash

path=$(pwd)
$(cd $path)

for i in $(seq 100)
do
        rm -rf \"($i).mp3\"
done

Fehler: cleanup.sh: 8: Syntax error: "(" unexpected (expecting "done")


Ich habe mir den Befehl mal ausgeben lassen:
Code:
Code
echo "rm -rf \"($i).mp3\""

Output
rm -rf "(1).mp3"
.
.
.
.
rm -rf "(100).mp3"

Wenn ich den Output manuell ausführe klappt alles ohne Probleme, was mache ich falsch?
 
Code:
        rm -rf \"($i).mp3\"

Warum maskierst du die Anführungszeichen? Wenn du das nicht machen würdest, würde das gehen.

Code:
rm -rf "${i}.mp3"
Solltest du tatsächlich Dateien im Format "(1).mp3" haben...
Code:
rm -rf "(${i}).mp3"
HTH

Micha
 
Hallo Mime,

danke für die Antwort, ich dachte ich muss die Dinger escapen, bin garnicht darauf gekommen es mal ohne zu versuchen...

Naja, mein Resultat:
Code:
#/bin/bash
cd $(pwd)
for i in $(seq 100)
do
	$(rm -rf "(${i}).mp3")
done

Output:
cd: 2: can't cd to /media/***/***
cleanup.sh: 4: Syntax error: word unexpected (expecting "do")


Der Pfad ist korrekt, aber warum er kein "do" findet... Ich glaube ich sehe grade den Wald vor lauter Bäumen mal wieder nicht ich meine, wie schwer kann es sein so ein scheiß script zu schreiben...
 
Code:
#/bin/bash
cd $(pwd)
for i in $(seq 100)
do
	$(rm -rf "(${i}).mp3")
done

Also erstmal ist noch das Shebang falsch (#!). und dann frag ich mich, warum du den rm Befehl klammerst? du willst ihn doch nur ausführen. Ein einfaches rm -f "($i).mp3" würde mehr als reichen. Und das cd $(pwd) ist auch sinnlos, da dir pwd das aktuelle Arbeitsverzeichnis ausgibt und da bist du ja schon drin und brauchst nicht mehr reinwechseln.
 
Hallo lookshe,

danke für die Hinweise, habe noch nie schellscripte angewendet und kenne mich daher nur sehr bedingt aus... Den shebag habe ich übersehen, das cd hatte ich eingebaut, da ich mir nicht 100% sicher war, welches Verzeichnis das Script nutzt.

Des Weiteren hatte ich noch einen Denkfehler verbaut...

Jetzt funktioniert alles wunderbar und ich habe wieder etwas gelernt :>

Danke
 
Zurück
Oben