Es ist alles, was kein Symlink ist

12

Gibt lses eine Möglichkeit, negierte Bedingungen wie "Alle Dateien, die kein Symlink sind" anzuzeigen? Ich verwende letzteres häufig in einem Projektverzeichnis, aber auch andere Negationen wären nützlich.

Im Moment hat meine Forschung nur dazu geführt, einen Alias ​​für etwas "wie" zu erstellen:

find . -maxdepth 1 ! -type l | sort # (...)

aber offensichtlich bekomme ich auf diese Weise nicht die Färbung ls, die Spaltenformatierung, etc ...

Ich bin manchmal auf Bash v3 unter OS X 10.8.2 und Bash v4 unter Pangolin.

Robottinosino
quelle

Antworten:

14

sortVerwenden Sie stattdessen ls.

find . -maxdepth 1 \! -type l -exec ls -d {} +

find . -maxdepth 1 \! -type l | xargs ls -d

Wenn Sie die zsh-Shell verwenden, können Sie die nicht portierbaren glob-Erweiterungen verwenden:

ls -d *(^@)
Random832
quelle
Thx 4 die Antwort! Warum fliehst du? Es scheint auch ohne zu funktionieren. Was riskiere ich, wenn ich nicht entkomme? Interessant, wie du ein Finale verwendest +und nicht \;, bitte erläutern?
Robottinosino
2
@Robottinosino Mit dem Befehl wird +alles an einen einzelnen lsBefehl gesendet, anstatt es für jede Datei separat auszuführen (auf diese Weise können die Spalten und das Sortieren durchgeführt werden). Ich bin dem entkommen! weil es ein besonderer Charakter für einige Muscheln ist, obwohl deine es gut zu akzeptieren scheinen.
Random832
Erwischt. Tolles Zeug! Stimmen Sie zu, dass es ein bisschen mühsam ist, ein Prädikat in einem einfachen zu negieren ls? Könnte es einen besseren Weg geben?
Robottinosino
1
@Robottinosino Mit etwas bearbeitet, was zsh kann. Ich glaube nicht, dass bash das kann.
Random832