¿Cómo realizar la sustitución de comandos antes de la expansión de llaves?

¿Cómo realizar la sustitución de comandos antes de la expansión de llaves?

Me gustaría realizar la sustitución de comandos antes de la expansión de llaves, pero no pude:

$ ls {$(seq -s , 13 20)}.pdf
ls: cannot access {13,14,15,16,17,18,19,20}.pdf: No such file or directory

¿Cómo puedo hacerlo?

Respuesta1

Simplemente necesitas usar el evalshell incorporado:

$ eval ls {$(seq -s , 13 20)}.pdf

De dónde evalse toman los argumentos que se le pasan:

ls {$(seq -s , 13 20)}.pdf

y los concatena en un solo comando:

ls {13,14,15,16,17,18,19,20}.pdf

que luego es leído y ejecutado por el shell.

$ eval ls {$(seq -s , 13 20)}.pdf
13.pdf  14.pdf  15.pdf  16.pdf  17.pdf  18.pdf  19.pdf  20.pdf

Respuesta2

has probado

ls $(seq -f %.0f.pdf 13 20 )
  • -fda la cadena de formato
  • .0fpara 0 dígitos decimales flotantes
  • .pdfobvio

(y conoces la sintaxis de $( ))

información relacionada