¿Cómo copiar un determinado archivo varias veces con un final normal?

¿Cómo copiar un determinado archivo varias veces con un final normal?

Tengo un solo archivo (un PDF) y quiero tener muchas copias idénticas en la misma carpeta (200 sería bueno) con el nombre file-001, file-002etc.

¿Cómo lo hago?

Respuesta1

Podrías hacer algo como

< file tee file-{001..200}

sin embargo, si el medio se vuelve ilegible, no importará cuántas copias tenga; fundamentalmente, las copias de seguridad requierendiversidad.

Tenga en cuenta que teeescribe su entrada estándar en la salida estándar, así como en cada uno de los archivos proporcionados; para archivos grandes o para archivos que contienen datos binarios u otros caracteres especiales que pueden interferir con la configuración de su terminal, probablemente desee volcar la salida estándar a el cubo de bits

< file > /dev/null tee file-{001..200}

Respuesta2

Este es el caso clásico en el que los trucos de shell ayudan mucho.

for i in {000..199}; do cp file file-$i; done

Yse que es una broma, pero si quieres un azar _o -separar el número del nombre puedes usar:

for i in {000..199}; do 
    cp file file$(cat /dev/urandom | tr -dc '_-' | fold -w 1 | head -n 1 )$i; 
done

(varias líneas para ayudar a la legibilidad...)

:-PAG

Respuesta3

Para hacer un único duplicado de un archivo, probablemente sepas que puedes usar cp:

cp file file-001

Ahora, para hacer más duplicados en un archivo, puedes combinarlo cpcon xargs. En tu caso:

echo file-{001..200} | xargs -n 1 cp file

copiará filea file-001, file-002,... , file-200. Consulte man xargspara obtener más información.

Respuesta4

Como siempre, el camión pitón llega tarde, pero:

hágalo ejecutable, arrástrelo sobre una ventana de terminal, arrastre el archivo para copiarlo sobre la ventana de terminal y establezca el número de copias:

script file number_ofcopies

El número de ceros a la izquierda se establece automáticamente, los archivos se denominan file_001.pdf, file_002.pdf, con los números de archivo colocadosantesla extensión.

La secuencia de comandos:

#!/usr/bin/env python3

import sys
import shutil

orig = sys.argv[1]; n = sys.argv[2]; size = len(str(n)); out = (orig[:orig.rfind(".")], orig[orig.rfind("."):])
for item in [out[0]+"_"+(size-len(str(item)))*"0"+str(item)+out[1] for item in range(1, int(n)+1)]:
    shutil.copyfile(orig, item)

información relacionada