Wie kann ich auf einfache Weise 5 Kopien einer Datei erstellen?


13

Ich kann 5 Dateien irgendwohin verschieben mit:

$ mv my-{1..5}.jpg /path/to/dir/

Wie kann ich eine Datei einfach 5-mal kopieren?

# doesn't work
$ cp my.jpg my-{1..5}.jpg

Kann man a nicht benutzen for loop?

Antworten:


12

Versuche dies

for f in {1..5}; do cp my.jpg my$f.jpg; done

(Habe keine Bash hier, um es selbst zu versuchen)


6
ersetzen for f in $fmit for f in $(seq 5).
Dan D.

1
Kann man a nicht benutzen for loop?
Kev

@kev - Ich habe es immer so gesehen; auch mehr readabe.
Turm

3
@kev, was ist los mit einer for-Schleife? Dies ist, was für Schleifen sind für ...
soandos

3
@DanD .: seqist in Bash nicht erforderlich. Sie können for f in {1..5}oderfor ((f=1; f<=5; f++))
Bis auf weiteres angehalten verwenden.

6

Hier ist eine Möglichkeit, dies ohne forSchleife und ohne das Risiko der Verwendung zu tun eval:

printf '%s\n' {1..5} | xargs -I {} cp my.jpg my-{}.jpg

Es ist immer noch effektiv eine Schleife.


4

Versuchen Sie tee:

tee <my.jpg >/dev/null my-{1..5}.jpg

Oder parallel:

parallel cp my.jpg ::: my-{1..5}.jpg

3

Sie können es ohne eine Schleife tun .. mit teeund {}Erweiterung Klammer.

EDIT: (ergänzt nach Dennis Williamsons Kommentar:

Für eine Datei mit dem Namen "my-.jpg"

pre="my-"; suf=".jpg"
<"$pre$suf" tee "$pre"{1..5}"$suf" >/dev/null

1
Eval muss nicht verwendet werden. <"$pre$suf" tee "$pre"{1..5}"$suf"funktioniert gut
Bis auf weiteres angehalten.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.