staging.inyokaproject.org

rm zu löschende Dateinamen aus Datei einlesen

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

posti

Anmeldungsdatum:
30. März 2009

Beiträge: 2086

Hi

Habe einen Script (Bash) geschrieben, der mir mehrere Ordner nach kodierten Dateien durchsucht, die Treffer in einem Array speichert. Gleiches geschieht nun mit den dekodierten Dateien. Wenn sowohl kodierte wie auch dekodierte Files gefunden wurden, wird mir der Name der kodierten Datei in einer TXT-Datei geschrieben. Nun wollte ich die Dateinamen in dieser TXT-Datei mit 'rm' verknüpfen, um alle diese Dateien entfernen zu lassen. Aber ein 'rm < datei.txt' zeigt mir, daß rm die Datei gerne in der Befehlszeile hätte. Auch mit einer Pipe 'cat datei.txt | rm *irgendwas*' klappt nicht aus dem selben Grund.

Noch möchte ich nicht, daß der erstellende Script die Files direkt löscht, allerdings haben sich mittlerweile 130 Dateien angesammelt, die in kodierter Form nicht mehr gebraucht werden und nur Plattenplatz belegen. ... außerdem hoffe ich, sollte das Löschen doch ein Schnellschuß sein, diese Files bei Bedarf wieder zurück holen zu können - wie weiß ich zwar noch nicht, aber noch habe ich das Problem ja nicht 😉 Auch ist der Überblick, ob ich ein File schon dekodiert habe so nicht wirklich gegeben, ob ich also ein 'neues' File überhaupt Saugen muß oder ob ich das File schon habe.

Gibt es eine Möglichkeit, eine Auflistung von Dateien (in der txt-Datei) löschen zu lassen?

rm --help brachte leider keine Möglichkeit, die Suche hier im Forum gab auch kein Ergebnis - suchte nach rm, Datei, einlesen.

MfG

PS: Ubuntu 9.10 64bit auf 4x3GHz (Näheres müsste ich irgendwo aus Ubuntu auslesen) Wenn es jemand interessiert, was ich mit kodierten Dateien am Hut habe: ist ein Online TV Recorder (mit .com und ohne Leerzeichen wird sogar nen Link draus - war früher aber besser)

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Hi posti,

ja, so eine Liste einlesen zu lassen geht natürlich.

Du kannst es ganz einfach in ein Array übernehmen:

unset xarray		# vorsichthalber vorher löschen
xarray=($( < liste.txt ))
echo "1.Element: ${xarray[0]"

Info dazu: http://www.gnu.org/software/bash/manual/bashref.html#Arrays

Eine Tücke gibt es dabei aber. Sollte innerhalb eines Dateinamens ein Zeilenumbruch stehen (ja, das ist erlaubt !)
dann geht das ganze Konzept mit der Liste schief. - Muss man nur wissen.

track

posti

(Themenstarter)

Anmeldungsdatum:
30. März 2009

Beiträge: 2086

Hi

Danke für die schnelle Antwort. Dann muß ich wohl auf jeden Fall auch wieder einen Script erstellen. In einem Script ist es ja kein sooo großes Problem, die einzelnen Files incl. Pfad vor ein 'rm' zu plazieren. Angedacht ist es, später dem Script mit diversen Optionen (ala -h --help) eine linuxähnliche Bedienung zu geben. Dort dann auch, daß die bereits fertigen Dateien entfernt werden können. Bin aber noch recht am Anfang vom Scripten in der Bash, Google sei Dank hat's bisher ganz gut geklappt.

Ok, werde ich dem Script ein Delete beibringen.

MfG

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Ach, Du wolltest es als Einzeiler auf der Kommandozeile haben ?

Geht auch:

while read zeile; do ; rm "$zeile" ; done < liste.txt

Aber lies Dir doch einfach mal dies Ding grob durch: http://www.gnu.org/software/bash/manual/bashref.html

track

posti

(Themenstarter)

Anmeldungsdatum:
30. März 2009

Beiträge: 2086

Hi

Ok, sieht einem Script jetzt nicht unähnlich 😉 Dein Link schaut gut aus, zwar englisch, aber werde ich mit leben müssen / schon hinbekommen.

Bin gerade dabei, meinem Script -h sowie -rm beizubiegen, wird schon schief gehen.

Danke für die Unterstützung

MfG

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Eine deutsche Version gibt es davon auch. Aber die ist nicht ganz vollständig:
http://www.fedorawiki.de/index.php/Bash_Benutzerhandbuch_3.2_Start

track


p.s.: hier findest Du übrigens auch noch Anregungen ohne Ende: http://forum.ubuntuusers.de/forum/shell-und-programmieren/

posti

(Themenstarter)

Anmeldungsdatum:
30. März 2009

Beiträge: 2086

Na Super ...

komme ich heute schon wieder nicht ins Bett 😛

Besten Dank Posti

Antworten |