2015-06-03 5 views
5

Ich dachte rm entfernt die Dateien in alphabetischer Reihenfolge, aber es ist nicht nach meiner Ausführung.Linux rm -rf * Aufträge löschen?

enter image description here

Also, was ist die Reihenfolge der Befehl rm executation?

+4

http://unix.stackexchange.com/questions/161770/how-does-rm-r-go-about-recurisely-removing-in-what-order – runDOSrun

Antwort

7

Es ist nicht rm selbst bietet die sortierte Natur, es ist die Shell-Erweiterung. Wenn Sie rm * geben sind, die Schale würde das wie etwas erweitern:

rm aaa bbb ccc 

und rm würden nie sogar sehen ein * Argument. By the way, ich bin nicht sicher, dass sortierter Verhalten für alle Schalen gewährleistet ist, aber es ist sicherlich für bash, gemäß der manpage:

... mit einer alphabetisch sortierten Liste von Dateinamen ersetzt passend die Muster.

Der Befehl rm -rf * ist ein etwas seltsamer, hybrider Fall da, auch wenn die Shell die * Einträge sortiert, das ist nach wie vor nur für die erste Ebene der Einträge.

Daher rm -rf * gut kann erweitern:

rm -rf aa_dir bb_dir cc_dir 

aber es ist völlig bis zu wie rm Arbeiten intern in Bezug auf die Reihenfolge der Bearbeitung der Einträge unter diesen Verzeichnissen (obwohl offensichtlich ist es eine sichere Wette Alle Einträge in einem Verzeichnis werden vor dem Verzeichnis selbst gelöscht).

Mehr als wahrscheinlich wird es nur readdir() oder etwas Ähnliches verwenden, das Sachen basierend auf wie sie in den Verzeichnisakten eher als einige alphabetische Ordnung geordnet werden.

In jedem Fall sollte die Reihenfolge, in der sie gelöscht werden, wahrscheinlich keine Rolle spielen - sie werden schließlich alle gelöscht, vorausgesetzt, Berechtigungen erlauben.

+0

Danke! es ist hilfreich! Ich habe viel gegoogelt, es gibt viele nicht detaillierte Antworten. –

Verwandte Themen