Como copiar um determinado arquivo várias vezes com final regular?

Como copiar um determinado arquivo várias vezes com final regular?

Eu tenho um único arquivo (um PDF) e quero ter muitas cópias idênticas na mesma pasta (200 seria bom) chamada file-001etc.file-002

Como eu faço isso?

Responder1

Você poderia fazer algo como

< file tee file-{001..200}

no entanto, se o meio se tornar ilegível, não importa quantas cópias ele contém - fundamentalmente, os backups exigemdiversidade.

Observe que teegrava sua entrada padrão na saída padrão, bem como em cada um dos arquivos fornecidos - para arquivos grandes ou para arquivos contendo dados binários ou outros caracteres especiais que possam interferir nas configurações do seu terminal, você provavelmente desejará despejar a saída padrão em o balde de bits

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

Responder2

Este é o caso clássico em que truques de shell ajudam muito.

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

Eeu sei que é uma piada, mas se quiser um número aleatório _ou -separando o número do nome você pode usar:

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

(várias linhas para ajudar na legibilidade...)

:-P

Responder3

Para fazer uma única duplicata de um arquivo, você provavelmente sabe que pode usar cp:

cp file file-001

Agora, para fazer mais duplicatas em um arquivo, você pode combinar cpcom xargs. No seu caso:

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

irá copiar filepara file-001, file-002,... , file-200. Veja man xargspara mais informações.

Responder4

Como sempre, o caminhão python chega atrasado, mas:

torne-o executável, arraste-o sobre uma janela do terminal, arraste o arquivo para copiar sobre a janela do terminal e defina o número de cópias:

script file number_ofcopies

O número de zeros à esquerda é definido automaticamente, os arquivos são nomeados file_001.pdf, file_002.pdf, com os números dos arquivos colocadosantesa extensão.

O roteiro:

#!/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)

informação relacionada