Bagaimana saya bisa membuat 5 salinan dari satu file dengan mudah?


12

Saya dapat memindahkan 5 file ke suatu tempat menggunakan:

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

Bagaimana saya bisa menyalin satu file sebanyak 5 kali dengan mudah

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

Apakah mungkin untuk tidak menggunakan a for loop?

Jawaban:


11

Coba ini

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

(tidak perlu bash di sini untuk mencobanya sendiri)


5
menggantikan for f in $f dengan for f in $(seq 5).
Dan D.

1
apa itu mungkin tidak untuk menggunakan a for loop?
kev

@ kev - Saya selalu melihatnya dilakukan dengan cara ini; juga, lebih mudah dibaca.
Rook

3
@ kev, apa yang salah dengan for for loop? Ini adalah untuk loop adalah untuk ...
soandos

3
@DanD .: seq tidak perlu di Bash. Kamu bisa memakai for f in {1..5} atau for ((f=1; f<=5; f++))
Dennis Williamson

6

Berikut adalah cara untuk melakukannya tanpa for lingkaran dan tanpa risiko menggunakan eval:

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

Itu masih efektif satu loop.


4

Mencoba tee:

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

Atau parallel:

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

3

Anda dapat melakukannya tanpa loop .. menggunakan tee dan {} ekspansi brace.

EDIT: (diamandemen sesuai Dennis Williamson komentar:

Untuk file bernama "my-.jpg"

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

1
Tidak perlu menggunakan eval. <"$pre$suf" tee "$pre"{1..5}"$suf" berfungsi dengan baik.
Dennis Williamson

@ Dennis: Begitu ya .. terima kasih :)
Peter.O
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.