Wie kopiere ich eine bestimmte Datei mehrmals mit einer regulären Endung?

Wie kopiere ich eine bestimmte Datei mehrmals mit einer regulären Endung?

Ich habe eine einzelne Datei (ein PDF) und möchte viele identische Kopien im selben Ordner haben (200 wären schön), mit dem file-001Namen file-002usw.

Wie mache ich es?

Antwort1

Sie könnten so etwas tun wie

< file tee file-{001..200}

Wenn das Medium jedoch unlesbar wird, spielt es keine Rolle, wie viele Kopien darauf vorhanden sind - grundsätzlich erfordern BackupsDiversität.

Beachten Sie, dass teedie Standardeingabe sowohl in die Standardausgabe als auch in jede der angegebenen Dateien geschrieben wird. Bei großen Dateien oder bei Dateien, die Binärdaten oder andere Sonderzeichen enthalten, die Ihre Terminaleinstellungen beeinträchtigen könnten, möchten Sie die Standardausgabe wahrscheinlich in den Bit Bucket schreiben.

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

Antwort2

Dies ist der klassische Fall, in dem Shell-Tricks sehr hilfreich sind.

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

UndIch weiß, es ist ein Witz, aber wenn Sie ein zufälliges Ergebnis wünschen _oder -die Zahl vom Namen trennen möchten, können Sie Folgendes verwenden:

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

(mehrere Zeilen zur besseren Lesbarkeit …)

:-P

Antwort3

Um ein einzelnes Duplikat einer Datei zu erstellen, wissen Sie wahrscheinlich, dass Sie Folgendes verwenden können cp:

cp file file-001

Um nun weitere Duplikate einer Datei zu erstellen, können Sie cpmit kombinieren xargs. In Ihrem Fall:

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

filewird nach file-001, file-002, ... , kopiert file-200. man xargsWeitere Informationen finden Sie unter.

Antwort4

Wie immer kommt der Python-Truck zu spät, aber:

Machen Sie es ausführbar, ziehen Sie es über ein Terminalfenster, ziehen Sie die zu kopierende Datei über das Terminalfenster und legen Sie die Anzahl der Kopien fest:

script file number_ofcopies

Die Anzahl der führenden Nullen wird automatisch gesetzt, die Dateien werden mit file_001.pdf, file_002.pdf, benannt und die Dateinummern werdenVordie Erweiterung.

Das Skript:

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

verwandte Informationen