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-001
Namen file-002
usw.
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 tee
die 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 cp
mit kombinieren xargs
. In Ihrem Fall:
echo file-{001..200} | xargs -n 1 cp file
file
wird nach file-001
, file-002
, ... , kopiert file-200
. man xargs
Weitere 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)