imprime todos os arquivos em uma pasta

2

digamos ls retunrs file1 file2 dir1 dire2 ... , desejo imprimir you have file1 file2 dir1 dire2 ... in currnent folder .

Como posso fazer isso? ls | xargs -i echo 'you have {} in current folder' imprime

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

também, eu tentei %código% mas não conseguiu fazer funcionar. como o número de arquivos é indefinido. qual é a sintaxe certa para ls |xargs printf 'you have %s %s %s %s in current folder' neste caso?

printf é o mais próximo que consigo, mas não funciona.

    
por Bo Chen 12.04.2018 / 15:19

3 respostas

3

O seguinte irá funcionar, mas provavelmente tem algumas implicações negativas de segurança:

echo "You have" * "in current folder"

IMO uma maneira melhor, mas exigindo duas linhas seria:

files=(*)
echo "You have ${files[@]} in curent folder"

com printf:

files=(*)
printf '%s ' "You have ${files[@]} in current folder"
    
por 12.04.2018 / 15:21
0

Por que vale a pena:

echo You have $(ls) in the current folder 
    
por 12.04.2018 / 15:20
0

Eu acho que a solução do Jesse_b é a melhor, mas se você quiser algo como xargs você pode usar o GNU Parallel:

ls | parallel --xargs echo you have {} in current folder
    
por 19.04.2018 / 22:09

Tags