Sagen wir ls
gibt file1 file2 dir1 dire2 ...
zurück , ich möchte you have file1 file2 dir1 dire2 ... in currnent folder
drucken .
Wie kann ich das machen?ls | xargs -i echo 'you have {} in current folder'
druckt
you have file1 in current folder you have file2 in current folder you have dir1 in current folder you have dir2 in current folder you have xxx in current folder
außerdem habe ich versuchtls |xargs printf 'you have %s %s %s %s in current folder'
konnte es aber nicht zum Laufen bringen. da die Anzahl der Dateien unbegrenzt ist. was ist die richtige Syntax für printf
in diesem Fall?
ls | xargs printf 'you have [email protected] in current folder'
kommt mir am nächsten, aber es funktioniert nicht.
Akzeptierte Antwort:
Folgendes wird funktionieren, hat aber wahrscheinlich einige negative Auswirkungen auf die Sicherheit:
echo "You have" * "in current folder"
IMO ein besserer Weg, aber es wären zwei Zeilen erforderlich:
files=(*)
echo "You have ${files[@]} in curent folder"
Mit printf:
files=(*)
printf '%s ' "You have ${files[@]} in current folder"