Come copiare un certo file più volte con un finale regolare?

11

Ho un singolo file (un PDF) e voglio avere molte copie identiche nella stessa cartella (200 sarebbe bello) chiamato file-001 , file-002 ecc.

Come faccio?

    
posta Tim 26.08.2014 - 14:46
fonte

4 risposte

20

Potresti fare qualcosa di simile

< file tee file-{001..200}

tuttavia se il supporto diventa illeggibile non importa quante copie ci sono sopra - fondamentalmente i backup richiedono diversity .

Nota che tee scrive il suo input standard sullo standard output e su ciascuno dei file dati - per file di grandi dimensioni, o per file contenenti dati binari o altri caratteri speciali che potrebbero interferire con le impostazioni del terminale, probabilmente vuoi scaricare l'output standard sul bucket di bit

< file > /dev/null tee file-{001..200}
    
risposta data steeldriver 26.08.2014 - 15:03
fonte
20

Questo è il classico caso in cui i trucchetti aiutano molto.

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

E so che è uno scherzo , ma se vuoi un% casuale co_de% o _ che separa il numero dal nome che puoi utilizzare:

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

(più righe per facilitare la leggibilità ...)

: - P

    
risposta data Rmano 26.08.2014 - 15:03
fonte
7

Per creare un singolo duplicato di un file probabilmente sai che puoi usare cp :

cp file file-001

Ora, per creare più duplicati in un file, puoi combinare cp con xargs . Nel tuo caso:

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

copia file in file-001 , file-002 , ..., file-200 . Vedi man xargs per maggiori informazioni.

    
risposta data Radu Rădeanu 26.08.2014 - 20:31
fonte
4

Come sempre, il camion python arriva in ritardo, ma:

rendilo eseguibile, trascinalo su una finestra del terminale, trascina il file per copiarlo sulla finestra del terminale e imposta il numero di copie:

script file number_ofcopies

Il numero di zeri iniziali viene impostato automaticamente, i file sono denominati file_001.pdf , file_002.pdf , con i filenumeri posizionati prima l'estensione.

Lo script:

#!/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)
    
risposta data Jacob Vlijm 26.08.2014 - 15:59
fonte

Leggi altre domande sui tag