GNU/Linux >> Tutoriales Linux >  >> Linux

¿Archivo duplicado X veces en Command Shell?

Intento duplicar un archivo de video x veces desde la línea de comando usando un bucle for, lo he intentado así, pero no funciona:

for i in {1..100}; do cp test.ogg echo "test$1.ogg"; done

Respuesta aceptada:

Su código de shell tiene dos problemas:

  1. El echo no debería estar allí.
  2. La variable $i está mal escrito como $1 en el nombre del archivo de destino.

Para hacer una copia de un archivo en el mismo directorio que el propio archivo, use

cp thefile thecopy

Si inserta algo más allí, por ejemplo,

cp thefile theotherthing thecopy

entonces se supone que le gustaría copiar thefile y theotherthing en el directorio llamado thecopy .

En tu caso, busca específicamente un archivo llamado test.ogg y uno llamado echo para copiar al directorio test$1.ogg .

El $1 lo más probable es que se expanda a una cadena vacía. Por eso, cuando eliminas el echo del comando, obtienes "test.ogg y test.ogg son los mismos archivos"; el comando que se ejecuta es esencialmente

cp test.ogg test.ogg

Probablemente se trate de un error de escritura.

Al final, quieres algo como esto:

for i in {1..100}; do cp test.ogg "test$i.ogg"; done

O, como alternativa

i=0
while (( i++ < 100 )); do
  cp test.ogg "test$i.ogg"
done

O, usando tee :

tee test{1..100}.ogg <test.ogg >/dev/null

Nota:Lo más probable es que esto funcione para 100 copias, pero para miles de copias puede generar un error de "lista de argumentos demasiado larga". En ese caso, vuelva a usar un bucle.


Linux
  1. Comando wc de linux

  2. Comando grep de Linux

  3. Comando de Linux para concatenar un archivo consigo mismo n veces

  4. ¿Para qué sirve Linux test -a command test?

  5. Comando de shell para monitorear cambios en un archivo

Comando Gunzip en Linux

Comando Stat en Linux

Comando fuente en Linux

Cómo redirigir la salida del comando de shell

Construcción de comandos

¿Qué es un archivo .sh?