Verzeichnisse auflisten, wobei zuletzt „directoryes“ und dann „files“ kommen.

Verzeichnisse auflisten, wobei zuletzt „directoryes“ und dann „files“ kommen.

Ich bin mir der lsOption bewusst --group-directories-first, aber das ist nicht unbedingt das, was ich erreichen möchte.

Die Ausgabe sollte wie folgt aussehen: (nach Namen ASC sortiert)

  • Verzeichnisse
  • Versteckte Verzeichnisse
  • Versteckte Dateien

Antwort1

Mit GNU ls(die -UOption, lsdie Dateiliste nicht zu sortieren, ist eine GNU-Erweiterung):

ls -lUd -- *(/) .*(/) .*(^/)

Das Problem besteht jedoch darin, dass der Befehl abgebrochen wird, wenn einer dieser Globs nicht übereinstimmt. Sie könnten also Folgendes tun:

myls() (
  setopt cshnullglob
  ls -lUd -- *(/) .*(/) .*(^/)
)

Dies emuliert das cshVerhalten, bei dem Globs ohne Übereinstimmung zu nichts expandiert werden, solange es mindestens einen Glob im Befehl gibt, der zu etwas expandiert.

Beachten Sie, dass zshGlobs .und nie erweitert werden .., sodass diese beiden nie eingeschlossen werden.

verwandte Informationen