Löschen mehrerer Dateien mithilfe von regulären ausdrücken

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
karkov
Beiträge: 69
Registriert: Di 27. Okt 2009, 17:52

Löschen mehrerer Dateien mithilfe von regulären ausdrücken

Beitrag von karkov »

Hallo!

Wie kann ich bei Lazarus mehrere bestimmte Dateien auf einmal Löschen? In meinem konkreten Beispiel muss ich alle Dateien Löschen, die einen "_" im Dateinamen aufweisen.
Ich hatte zuerst überlegt TProcess zur Hilfe zu nehmen und einfach "rm *_*" (Ich nutze Ubuntu als Plattform, das wäre also der entsprechende Shellbefehl) ausführen zu lassen, aber das klappt irgendwie nicht.

Vielen Dank
Karkov

Benutzeravatar
theo
Beiträge: 10500
Registriert: Mo 11. Sep 2006, 19:01

Re: Löschen mehrerer Dateien mithilfe von regulären ausdrücken

Beitrag von theo »

karkov hat geschrieben:Wie kann ich bei Lazarus mehrere bestimmte Dateien auf einmal Löschen? In meinem konkreten Beispiel muss ich alle Dateien Löschen, die einen "_" im Dateinamen aufweisen.
Ich hatte zuerst überlegt TProcess zur Hilfe zu nehmen und einfach "rm *_*" (Ich nutze Ubuntu als Plattform, das wäre also der entsprechende Shellbefehl) ausführen zu lassen, aber das klappt irgendwie nicht.


Das klappt nicht, weil es eben ein Shell Befehl ist. TProcess ruft noch keine Shell auf. Du könntest aber ein Shell Skript (*.sh) basteln und dieses aufrufen.

Ansonsten mit FindFirst/FindNext und DeleteFile arbeiten. Um ein "_" zu finden reicht die Funktion Pos. Regex braucht's dazu nicht.

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Löschen mehrerer Dateien mithilfe von regulären ausdrücken

Beitrag von Socke »

theo hat geschrieben:
karkov hat geschrieben:Wie kann ich bei Lazarus mehrere bestimmte Dateien auf einmal Löschen? In meinem konkreten Beispiel muss ich alle Dateien Löschen, die einen "_" im Dateinamen aufweisen.
Ich hatte zuerst überlegt TProcess zur Hilfe zu nehmen und einfach "rm *_*" (Ich nutze Ubuntu als Plattform, das wäre also der entsprechende Shellbefehl) ausführen zu lassen, aber das klappt irgendwie nicht.


Das klappt nicht, weil es eben ein Shell Befehl ist. TProcess ruft noch keine Shell auf. Du könntest aber ein Shell Skript (*.sh) basteln und dieses aufrufen.

Ansonsten mit FindFirst/FindNext und DeleteFile arbeiten. Um ein "_" zu finden reicht die Funktion Pos. Regex braucht's dazu nicht.

Ich habe auf meinem Debian Lenny eine /usr/rm, die man meiner Meinung nach auch mit TProcess aufrufen können müsste. Mit einem "klappt irgendwie nicht" kann aber auch meine Glaskugel nichts anfangen :D
Warum ein Shell-Script schreiben, wenn man die Shell auch direkt aufrufen kann?

Code: Alles auswählen

bash -c rm *_*
# oder alternativ über stdin
# muss nur mit TProcess entsprechend umgesetzt werden
# ACHTUNG: die Sternchen (*) werden, wenn in der Shell eingegeben, ersetzt
echo "rm *_*" | bash -s
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Löschen mehrerer Dateien mithilfe von regulären ausdrücken

Beitrag von pluto »

Warum nicht einfach selbst eine Funktion mit Hilf von FindFile, FindNext erstellen ? bzw. TSearch aus der unit fileutilitis(oder so 'ähnlich).
Löschen tust du dann mit DeleteFile(DateiNamen)
MFG
Michael Springwald

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: Löschen mehrerer Dateien mithilfe von regulären ausdrücken

Beitrag von Hitman »

pluto hat geschrieben:Warum nicht einfach selbst eine Funktion mit Hilf von FindFile, FindNext erstellen ? bzw. TSearch aus der unit fileutilitis(oder so 'ähnlich).
Löschen tust du dann mit DeleteFile(DateiNamen)

Genau das hat theo zwei Posts über dir vorgeschlagen ............ ;-)

pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Löschen mehrerer Dateien mithilfe von regulären ausdrücken

Beitrag von pluto »

Ja, aber auf eine Andere Art und weise *G* und Doppelt hält im allgemeinen besser.
MFG
Michael Springwald

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Löschen mehrerer Dateien mithilfe von regulären ausdrücken

Beitrag von Socke »

pluto hat geschrieben:Ja, aber auf eine Andere Art und weise *G* und Doppelt hält im allgemeinen besser.

zwei mal löschen geht nicht ... aber überschreiben :D
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Löschen mehrerer Dateien mithilfe von regulären ausdrücken

Beitrag von pluto »

zwei mal löschen geht nicht ... aber überschreiben

warum nicht ? Einmal in den "Papierkorb" und einmal "Richtig"
MFG
Michael Springwald

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Löschen mehrerer Dateien mithilfe von regulären ausdrücken

Beitrag von Socke »

Den Papierkorb sehe ich nicht als löschen an sondern eher als Zwischenablage für Dateien, bei denen man sich nicht sicher ist, ob man sie nochmal braucht.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten