Ordnerliste unter Linux Shell erstellen
Hallo,
ich versuche verzweifelt unter Linux eine Ordnerliste zu erstellen. Mein Ziel ist es, dasselbe Resultat wie mit folgendem Windows-Befehl zu erhalten.
cmd /u /c dir Ordnername\*. /b /o:-d > folderlist-UNICODE.txt
Liste mit allen im Ordner enthaltenen Ordnern in sortierter Reihenfolge nach letztem Zugriff/Erstelldatum.
Ein Ansatz wäre mal: ls -t -Fh -c | grep /$ | sed s#/##g
Allerdings erhalte ich beim Schreiben in eine Text-Datei eine Liste ohne Zeilenumbrüche.
Vielen Dank
ich versuche verzweifelt unter Linux eine Ordnerliste zu erstellen. Mein Ziel ist es, dasselbe Resultat wie mit folgendem Windows-Befehl zu erhalten.
cmd /u /c dir Ordnername\*. /b /o:-d > folderlist-UNICODE.txt
Liste mit allen im Ordner enthaltenen Ordnern in sortierter Reihenfolge nach letztem Zugriff/Erstelldatum.
Ein Ansatz wäre mal: ls -t -Fh -c | grep /$ | sed s#/##g
Allerdings erhalte ich beim Schreiben in eine Text-Datei eine Liste ohne Zeilenumbrüche.
Vielen Dank
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 249136
Url: https://administrator.de/contentid/249136
Ausgedruckt am: 23.11.2024 um 01:11 Uhr
5 Kommentare
Neuester Kommentar
Verwendeter Editor: Windows Standard (notepad.exe)
Dann ist alles klar, der Grund ist das das "dumme" Notepad nur DOS-Zeilenumbrüche mit Carriage Return "\r\n" und keine reinen Unix Zeilenumbrüche "\n" kennt! Wenn du mal mit einem HEX-Editor in die Datei hineinschaust wirst du feststellen das zwischen den Ordnern nur ein 0A für einen Linefeed(LF) vorhanden ist, wohingegen für einen DOS-Zeilenumbruch ein 0D 0A benutzt wird (CR LF).Nehme als mal einen anderen Editor her (z.B. notepad++, oder wordpad), und du wirst sehen das sie sehr wohl da sind , die wandeln das nämlich automatisch um.
Oder du wandelst mit SED die Zeilenumbrüche zusätzlich in DOS Zeilenumbrüche um.
kombiniert mit obigem Befehl sähe das dann so aus:
ls -1dt */ | sed 's/\/$/\r/' >folderlist.txt
Zitat von @tHe-jAy:
Wenn ich jetzt allerdings \r verwende, schreibt er ein "r" hinter jeden Ordner (einzeilig in notepad.exe) - mehrzeilig
mit "r" in Notepad++
Was für eine sed Version hast du? da gibt es einige Unterschiede ... Läuft hier aber selbst auf einem älteren Ubuntu 10.04 einwandfrei ... selbst ein gejailbreaktes iPhone macht das hier ohne murrenWenn ich jetzt allerdings \r verwende, schreibt er ein "r" hinter jeden Ordner (einzeilig in notepad.exe) - mehrzeilig
mit "r" in Notepad++
Je nachdem wo du es ausführst musst du den Backslash eventuell verdoppeln.
Das sind die unterschiedlichen Varianten für die Umwandlung von UNIX in DOS Umbrüche, unter Linux:
sed "s/$/`echo -e \\\r`/" # ksh
sed 's/$'"/`echo \\\r`/" # bash
sed "s/$/`echo \\\r`/" # zsh
sed 's/$/\r/' # gsed 3.02.80 oder neuere Versionen