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?
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?
Dadurch wird das letzte Komma durch einen Zeilenumbruch ersetzt:
ls -1 | tr '\n' ',' | sed 's/,$/\n/'
ls -m
enthält Zeilenumbrüche an der Stelle, an der der Bildschirm am breitesten ist (z. B. 80.).
Meistens Bash (nur ls
ist extern):
saveIFS=$IFS; IFS=$'\n'
files=($(ls -1))
IFS=,
list=${files[*]}
IFS=$saveIFS
Verwendung von readarray
(alias mapfile
) in Bash 4:
readarray -t files < <(ls -1)
saveIFS=$IFS
IFS=,
list=${files[*]}
IFS=$saveIFS
Vielen Dank an gniourf_gniourf für die Vorschläge.
Parsing ls
im Allgemeinen wird nicht empfohlen Die bessere Alternative ist also die Verwendung von find
zum Beispiel:
find . -type f -print0 | tr '\0' ','
Oder durch die Verwendung von find
et paste
:
find . -type f | paste -d, -s
Für allgemeines Verbinden mehrerer Zeilen (nicht auf das Dateisystem bezogen), prüfen Sie: Kurzes und portables "join" auf der Unix-Kommandozeile .
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.