Die offensichtliche Lösung ergibt einen Exit-Code von 1:
bash$ rm -rf .*
rm: cannot remove directory `.'
rm: cannot remove directory `..'
bash$ echo $?
1
Eine mögliche Lösung überspringt das "." und ".." Verzeichnisse löschen jedoch nur Dateien, deren Namen länger als 3 Zeichen sind:
bash$ rm -f .??*
Antworten:
Sollte alle Fälle fangen. Das. ?? * passt nur zu Dateinamen mit mehr als 3 Zeichen (wie in der vorherigen Antwort erläutert), das. [^.] Fängt zwei beliebige Zeichen (außer ..) ab.
quelle
zsh
. Irgendwelche Vorschläge?zsh
der Standardeinstellung wird ein leeres Platzhalter Spiel als Fehler behandelt; wohingegenbash
damit einfach unverändert weitergereicht wird. Umzsh
verhalten sich die gleiche Weise können Sie den Befehlunsetopt nomatch
Dies entspricht allen Dateien im aktuellen Verzeichnis, die mit einem beginnen,
.
und löscht diese rekursiv. Versteckte Dateien in nicht versteckten Verzeichnissen werden nicht berührt.Für den Fall, dass Sie wirklich alles aus einem Verzeichnis
find -delete
löschen möchten , würde dies ausreichen.quelle
.
Der beste Weg ist wahrscheinlich:
Ändern Sie rm in ls -l, wenn Sie nur sehen möchten, was gelöscht werden soll. Um die Ausgabe ausführlicher darzustellen, möchten Sie u. U. die Option -v zu rm hinzufügen
ps. vergiss nicht '\;'
quelle
quelle