580 Stimmen

Wie lassen sich mehrere Zeilen mit Dateinamen zu einer Zeile mit benutzerdefiniertem Trennzeichen zusammenfügen?

Ich möchte mich dem Ergebnis von ls -1 in eine Zeile einfügen und sie mit einem beliebigen Zeichen abgrenzen.

Gibt es irgendwelche Standard-Linux-Befehle, mit denen ich dies erreichen kann?

2voto

Thor Punkte 42021

ls erzeugt eine Spaltenausgabe, wenn sie mit einer Leitung verbunden ist, so dass die -1 ist überflüssig.

Hier ist eine weitere Perl-Antwort, die das builtin join Funktion, die kein Begrenzungszeichen hinterlässt:

ls | perl -F'\n' -0777 -anE 'say join ",", @F'

Das Obskure -0777 sorgt dafür, dass Perl alle Eingaben liest, bevor es das Programm ausführt.

sed-Alternative, die kein Begrenzungszeichen am Ende hinterlässt

ls | sed '$!s/$/,/' | tr -d '\n'

1voto

brtknr Punkte 9

Wenn Python3 Ihr Ding ist, können Sie das tun (aber bitte erklären Sie, warum Sie das tun würden?):

ls -1 | python -c "import sys; print(','.join(sys.stdin.read().splitlines()))"

1voto

Python Antwort oben ist interessant, aber die eigene Sprache kann sogar die Ausgabe schön machen:

ls -1 | python -c "import sys; print(sys.stdin.read().splitlines())"

0voto

Andrew Punkte 3305

ls hat die Möglichkeit -m um die Ausgabe zu begrenzen mit ", " ein Komma und ein Leerzeichen.

ls -m | tr -d ' ' | tr ',' ';'

dieses Ergebnis mit der Pipeline zu tr um entweder das Leerzeichen oder das Komma zu entfernen, können Sie das Ergebnis wieder nach tr um das Begrenzungszeichen zu ersetzen.

In meinem Beispiel ersetze ich das Begrenzungszeichen , mit dem Begrenzungszeichen ;

ersetzen. ; mit was auch immer ein Zeichen als Begrenzungszeichen Sie bevorzugen, da tr nur das erste Zeichen in den Zeichenfolgen berücksichtigt, die Sie als Argumente übergeben.

0voto

codaddict Punkte 426877

Sie können verwenden:

ls -1 | perl -pe 's/\n$/some_delimiter/'

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X