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-002
etc.
¿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 tee
escribe 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 cp
con xargs
. En tu caso:
echo file-{001..200} | xargs -n 1 cp file
copiará file
a file-001
, file-002
,... , file-200
. Consulte man xargs
para 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)