In Bezug auf die ls(1)-Dokumentation (man ls
):
-A, --fast-all listet nicht implizit auf. und ..
Sie benötigen (ohne jedes zusätzliche Argument wie .*
):
ls -A
oder noch besser:
/bin/ls -A
Ich habe eine Situation, in der ich eine Reihe von Punktverzeichnissen entfernen möchte. Auf meinen Servern markieren wir Verzeichnisse zum Entfernen, indem wir einen Punkt und bestimmte andere Textmuster (Zeitstempel) zum automatischen Entfernen hinzufügen. Manchmal muss ich das manuell machen.
Wie ich auf die Antwort von Basile Starynkevitch kommentiert habe, verliert der Schalter -A seine Funktion, wenn Sie ein Globbing-Muster wie das untenstehende verwenden, und funktioniert genauso wie -a:
[email protected]:~/scripts$ ls -1dA .*
.
..
.comparepp.sh.swp
Es würde höchstwahrscheinlich einen Fehler geben, wenn ich versuche, Dateien als Benutzer zu entfernen, aber ich möchte einfach nicht daran denken, was als Root (!) passieren könnte
Mein Ansatz in diesem Fall ist:
for dir in $(ls -1ad .* | tail -n +3) ; do rm -rfv $dir ; done
Ich schneide die 2 erste Zeile mit den Punkten aus, wie Sie sehen können. Um die Antwort auf die gestellte Frage zuzuschneiden, würde Folgendes funktionieren:
ls -d1A .* | tail -n +3
$ ls -lA
funktioniert am besten für meine Bedürfnisse.
Der Einfachheit halber empfehle ich, einen Alias innerhalb der .bashrc-Datei wie folgt zu definieren:
alias ll='ls -lA'