diciamo ls
restituisce file1 file2 dir1 dire2 ...
, voglio stampare you have file1 file2 dir1 dire2 ... in currnent folder
.
Come posso farlo?ls | xargs -i echo 'you have {} in current folder'
stampe
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
inoltre, ho provatols |xargs printf 'you have %s %s %s %s in current folder'
ma non sono riuscito a farlo funzionare. poiché il numero di file è indefinito. qual è la sintassi corretta per printf
in questo caso?
ls | xargs printf 'you have [email protected] in current folder'
è il più vicino che posso ottenere, ma non funziona.
Risposta accettata:
Quanto segue funzionerà, ma probabilmente ha alcune implicazioni negative sulla sicurezza:
echo "You have" * "in current folder"
IMO un modo migliore, ma richiedere due righe sarebbe:
files=(*)
echo "You have ${files[@]} in curent folder"
Con printf:
files=(*)
printf '%s ' "You have ${files[@]} in current folder"