Eu tenho um único arquivo (um PDF) e quero ter muitas cópias idênticas na mesma pasta (200 seria bom) chamada file-001
etc.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 tee
grava 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 cp
com xargs
. No seu caso:
echo file-{001..200} | xargs -n 1 cp file
irá copiar file
para file-001
, file-002
,... , file-200
. Veja man xargs
para 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)