amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Amiga, AmigaOS 4 > Amiga DOS - Wie Dateien rekursiv löschen [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2013-09-08, 10:42 h

Yvan
Posts: 334
User
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?

[ - Answer - Quote - Direct link - ]

2013-09-08, 12:10 h

DaxB
Posts: 1422
User
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.

[ - Answer - Quote - Direct link - ]

2013-09-08, 12:12 h

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

[ - Answer - Quote - Direct link - ]

2013-09-08, 12:23 h

Yvan
Posts: 334
User
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. ]

[ - Answer - Quote - Direct link - ]

2013-09-08, 13:47 h

Thore
Posts: 2266
User
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 ;)

[ - Answer - Quote - Direct link - ]

2013-09-08, 16:57 h

Dave
Posts: 63
User
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

[ - Answer - Quote - Direct link - ]

2013-09-10, 12:13 h

Tomas
Posts: 33
User
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.

[ - Answer - Quote - Direct link - ]

2013-09-10, 15:47 h

thomas
Posts: 7718
User
@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/

[ - Answer - Quote - Direct link - ]

2013-09-11, 13:38 h

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

[ - Answer - Quote - Direct link - ]

2013-09-11, 13:41 h

Thore
Posts: 2266
User
@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?

[ - Answer - Quote - Direct link - ]

2013-09-11, 13:46 h

thomas
Posts: 7718
User
@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. ]

[ - Answer - Quote - Direct link - ]

2013-09-11, 18:02 h

DaxB
Posts: 1422
User
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.

[ - Answer - Quote - Direct link - ]

2013-09-11, 19:22 h

Holger
Posts: 8116
User
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.

[ - Answer - Quote - Direct link - ]

2013-09-12, 13:34 h

Tomas
Posts: 33
User
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.

[ - Answer - Quote - Direct link - ]

2013-09-12, 18:45 h

DaxB
Posts: 1422
User
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.

[ - Answer - Quote - Direct link - ]

2013-09-12, 18:48 h

Holger
Posts: 8116
User
@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.

[ - Answer - Quote - Direct link - ]

2013-09-12, 23:49 h

_PAB_
Posts: 3016
User
@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")

[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Amiga, AmigaOS 4 > Amiga DOS - Wie Dateien rekursiv löschen [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.