amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Amiga, AmigaOS 4 > Amiga DOS - Wie Dateien rekursiv löschen [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

08.09.2013, 10:42 Uhr

Yvan
Posts: 332
Nutzer
Ich habe in gewissen Verzeichnissen sehr viele Dateien doppelt. Dabei hat die doppelte Datei den Suffix .BAK.

Nun kann ich in ein Verzeichnis gehen und folgendes eingeben

delete *.BAK

Aber das ganze erstreckt sich über viele Unterverzeichnisse. Es wird ziemlich aufwändig wenn ich in jedes einzelne Verzeichnis wechseln muss.

Gibt es einen Befehl, mit dem ich alle Dateien mit Endung *.BAK auch in Unterverzeichnissen löschen kann?

[ - Antworten - Zitieren - Direktlink - ]

08.09.2013, 12:10 Uhr

DaxB
Posts: 1421
Nutzer
Du kannst ALL als Schlüsselwort anhängen.
code:
delete #?.BAK ALL

Das ist aber mit Vorsicht zu verwenden. Nicht ausversehen alles/falsches löschen. Also das Namensmuster muss stimmen. Mit dem "List" Befehl kann man das vorher testen.

[ - Antworten - Zitieren - Direktlink - ]

08.09.2013, 12:12 Uhr

_PAB_
Posts: 3016
Nutzer
@Yvan:
Du kannst das relativ einfach mit einem "Weihnachtsbaum" erreichen:
delete *.BAK
delete */*.BAK
delete */*/*.BAK
[...]

[ - Antworten - Zitieren - Direktlink - ]

08.09.2013, 12:23 Uhr

Yvan
Posts: 332
Nutzer
Vielen Dank euch beiden.
Ich denke ich kann die erste Variante vorher so testen

dir #?.BAK ALL

[ Dieser Beitrag wurde von Yvan am 08.09.2013 um 12:24 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

08.09.2013, 13:47 Uhr

Thore
Posts: 2266
Nutzer
Im DOS Handbuch Seite 47, 48 stehts:
http://www.pagetable.com/docs/amigados_tripos/amigados_manual.pdf

ALL ist der rekursive-Schalter, wie schon erwähnt.
Das * Wildcard geht nur wenn du die Erweiterung für das * Wildcard installiert hast, oder eine Bash oder sh nimmst. Ansonsten ist #? das richtige Wildcard.

Kannst ja im RAM einen Dummy-Baum aufbauen und das Delete #?.bak ALL mal da ausprobieren bevor Du an die Festplatte gehst :)

Falls Du versehentlich Dateien gelöscht hast und kein Backup hast, empfehle ich DiskSalv zur Wiederherstellung ;)

[ - Antworten - Zitieren - Direktlink - ]

08.09.2013, 16:57 Uhr

Dave
Posts: 63
Nutzer
Das geht mit folgenden Befehlen:

list all files p=#?.bak lformat="delete *"%p%n*"" >ram:script
execute ram:script

Vor dem Execute aber erst mal schauen, was in dem Script steht.

Den Tipp bekam ich von Thomas, siehe auch hier: AmigaDos Delete Befehl

[ - Antworten - Zitieren - Direktlink - ]

10.09.2013, 12:13 Uhr

Tomas
Posts: 33
Nutzer
Mach das, was DaxB gesagt hat. Das ist die korrekte Methode.
Mit "list #?.bak all" kannst du dir vorher anschauen, was alles gelöscht wird.

[ - Antworten - Zitieren - Direktlink - ]

10.09.2013, 15:47 Uhr

thomas
Posts: 7716
Nutzer
@Tomas:

Nein, das funktioniert nicht.

#?.bak berücksichtigt alle Einträge im aktuellen Verzeichnis, die auf .bak enden und löscht diese vollständig.

Angenommen du hast folgende Struktur:

tina/jutta.bak
tina/maja.bak
otto.bak/egon
otto.bak/hugo

dann werden egon, hugo und otto.bak gelöscht, aber jutta.bak und maja.bak nicht.

Der Vorschlag von Dave ist korrekt und funktioniert.


--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

11.09.2013, 13:38 Uhr

DaxB
Posts: 1421
Nutzer
Kennt jemand ein Beispielalgorithmus wie man unter DOS oder ARexx rekursiv Dateien erreicht. Also wie es das Schlüsselwort ALL macht?

[ - Antworten - Zitieren - Direktlink - ]

11.09.2013, 13:41 Uhr

Thore
Posts: 2266
Nutzer
@DaxB
Kommt drauf an was Du machen willst. Willst Du nur eine Liste ausgeben, oder willst Du die einzelnen Dateien öffnen und mit ihnen arbeiten?

[ - Antworten - Zitieren - Direktlink - ]

11.09.2013, 13:46 Uhr

thomas
Posts: 7716
Nutzer
@DaxB:

siehe SPat und DPat in S:

Oder lies einfach den Thread, Dave hat ja geschrieben, wie es geht.


Edit: falls du Programmierung meinst (dos.library), dann schau mal in die Autodocs von MatchNext. Da ist ein komplettes Beispiel.

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ Dieser Beitrag wurde von thomas am 11.09.2013 um 13:49 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

11.09.2013, 18:02 Uhr

DaxB
Posts: 1421
Nutzer
Ist das Beispiel in den ROM_KERNEL_MANUALS? MatchNext() habe ich gefunden, aber nicht das Beispiel.

Vor 1-2 Jahren hatte ich versucht ohne rexxarplib.library FILELIST(), oder rexxtricks.library GETDIR() (hat einen kleinen "Fehler") und nur mit ARexx internen Funktionen wie SHOWDIR() rekursiv alle Dateien zu erreichen (auflisten, bearbeiten). Das hat nicht funktioniert (ich meine mehr als 1 Unterverzeichnis habe ich nicht hinbekommen).

Ich vermute mal in DOS (ohne externe Befehle) geht das gar nicht, oder sehr aufwendig und dann viel zu langsam. Brauche ich aber auch nicht.

[ - Antworten - Zitieren - Direktlink - ]

11.09.2013, 19:22 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von DaxB:
Ich vermute mal in DOS (ohne externe Befehle) geht das gar nicht, …

Was genau verstehst Du unter „DOS (ohne externe Befehle)“?
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

12.09.2013, 13:34 Uhr

Tomas
Posts: 33
Nutzer
Directory-Scanning wird beschrieben auf der Developer-CD Reference/Amiga_Mail_Vol2/AmigaMail_Vol2/AmigaDos/Directory Scanning.
Dort gibt es auch Beispiel Source-Codes in C.

[ - Antworten - Zitieren - Direktlink - ]

12.09.2013, 18:45 Uhr

DaxB
Posts: 1421
Nutzer
Mit "ohne externe Befehle" meinte ich keine Befehle die z.B. in C: liegen. Also nur interne (residente) Befehle aus dem ROM. Allerdings gehören auch einige "externe" Befehle zu DOS. Daher ist meine Kommentar unwichtig.

@Tomas:
Danke für die Info. Die CD habe ich nicht und mit C kann ich wenig anfangen. Zumindestens bin ich damals mit den Beispielen nicht klar gekommen.

[ - Antworten - Zitieren - Direktlink - ]

12.09.2013, 18:48 Uhr

Holger
Posts: 8116
Nutzer
@DaxB:
Es wird Dir kaum gelingen, nur mit internen Befehlen ein sinnvolles DOS-Skript zu schreiben. Abgesehen davon kann AmigaDOS das Skript ohne den externen Befehl „execute“ nicht einmal ausführen…

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

12.09.2013, 23:49 Uhr

_PAB_
Posts: 3016
Nutzer
@DaxB:
Ich habe da schon seit geraumer Zeit ein Perl-Skript für solche Dateioperationen, welches Du gerne für Deine Zwecke abändern kannst:
http://www.bourdin.ch/Philippe/?Amiga (siehe "Changer")

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Amiga, AmigaOS 4 > Amiga DOS - Wie Dateien rekursiv löschen [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.