ฉันสามารถย้าย 5 ไฟล์ไปที่อื่นโดยใช้:
$ mv my-{1..5}.jpg /path/to/dir/
ฉันจะทำสำเนาไฟล์หนึ่งไฟล์ได้อย่างง่ายดาย 5 ครั้งได้อย่างไร
# doesn't work
$ cp my.jpg my-{1..5}.jpg
เป็นไปได้หรือไม่ที่จะไม่ใช้ a for loop
?
ฉันสามารถย้าย 5 ไฟล์ไปที่อื่นโดยใช้:
$ mv my-{1..5}.jpg /path/to/dir/
ฉันจะทำสำเนาไฟล์หนึ่งไฟล์ได้อย่างง่ายดาย 5 ครั้งได้อย่างไร
# doesn't work
$ cp my.jpg my-{1..5}.jpg
เป็นไปได้หรือไม่ที่จะไม่ใช้ a for loop
?
คำตอบ:
ลองสิ่งนี้
for f in {1..5}; do cp my.jpg my$f.jpg; done
(ไม่มีทุบตีที่นี่เพื่อลองด้วยตัวเอง)
for loop
?
seq
ไม่จำเป็นใน Bash คุณสามารถใช้for f in {1..5}
หรือfor ((f=1; f<=5; f++))
นี่เป็นวิธีที่จะทำได้โดยไม่ต้องfor
วนซ้ำและไม่มีความเสี่ยงในการใช้eval
:
printf '%s\n' {1..5} | xargs -I {} cp my.jpg my-{}.jpg
มันยังคงเป็นวงอย่างมีประสิทธิภาพ
ลองtee
:
tee <my.jpg >/dev/null my-{1..5}.jpg
หรือparallel
:
parallel cp my.jpg ::: my-{1..5}.jpg
คุณสามารถทำได้โดยไม่ต้องวนซ้ำ .. การใช้tee
และ{}
การขยายรั้ง
แก้ไข: (กระสุนตามความคิดเห็นของ Dennis Williamson :
สำหรับไฟล์ชื่อ "my-.jpg"
pre="my-"; suf=".jpg"
<"$pre$suf" tee "$pre"{1..5}"$suf" >/dev/null
<"$pre$suf" tee "$pre"{1..5}"$suf"
ทำงานได้ดี
for f in $f
for f in $(seq 5)