Ich sehe immer wieder Antworten, die diesen Link zitieren, die eindeutig „Parse ls nicht !”  Das stört mich aus mehreren Gründen:
-  Es scheint, dass die Informationen in diesem Link ohne Frage pauschal akzeptiert wurden, obwohl ich beim gelegentlichen Lesen zumindest ein paar Fehler erkennen kann. 
-  Es scheint auch, als ob die in diesem Link genannten Probleme keinen Wunsch geweckt haben, eine Lösung zu finden. 
Ab dem ersten Absatz:
 …wenn Sie [ls] fragen für eine Liste
 von Dateien gibt es ein riesiges Problem:Unix erlaubt fast jedes Zeichen in
 einem Dateinamen, einschließlich Leerzeichen, Zeilenumbrüche, Kommas, Pipe-Symbole und
 so ziemlich alles andere, was Sie tun würden Versuchen Sie jemals, es als Trennzeichen zu verwenden, außer 
 NUL. … ls trennt Dateinamen mit Zeilenumbrüchen. Das ist in Ordnung
 bis Sie eine Datei mit einem Zeilenumbruch im Namen haben. Und da ich keine 
 Implementierung von ls kenne das es Ihnen erlaubt,
 Dateinamen mit NUL-Zeichen anstelle von Zeilenumbrüchen zu beenden, so dass wir
 keine Liste von Dateinamen sicher mit ls erhalten können .
Schade, oder? Wie immer Können wir einen aufgelisteten Datensatz mit Zeilenumbrüchen für Daten handhaben, die Zeilenumbrüche enthalten könnten? Nun, wenn die Leute, die Fragen auf dieser Website beantworten, so etwas nicht täglich tun würden, könnte ich denken, dass wir in Schwierigkeiten stecken.
 Die Wahrheit ist jedoch, dass die meisten ls Implementierungen bieten tatsächlich eine sehr einfache API zum Analysieren ihrer Ausgabe, und wir alle haben dies die ganze Zeit getan, ohne es überhaupt zu merken. Sie können einen Dateinamen nicht nur mit null beenden, Sie können ihn auch mit null oder mit einer beliebigen anderen beliebigen Zeichenfolge beginnen. Darüber hinaus können Sie diese beliebigen Zeichenfolgen pro Dateityp zuweisen . Bitte beachten Sie:
LS_COLORS='lc=