Score:5

ImageMagick แปลงไฟล์หลายไฟล์

ธง ru

ฉันมี 3 ไฟล์ในไดเรกทอรี:

aaa.jpg    
bbb.jpg  
ccc.jpg  

ฉันสามารถย่อขนาดรูปภาพโดยใช้ ImagkMagick แปลง:

แปลง aaa.jpg -resize 1200x900 aaa-small.jpg  

ฉันต้องการสร้างภาพทั้งหมดในไดเร็กทอรี เช่น:

แปลง *.jpg -resize 1200x900 *-small.jpg  

แต่ส่งผลให้ไฟล์ชื่อดังนี้:

*-small-0.jpg  
*-small-1.jpg  
*-small-2.jpg  

สิ่งที่ฉันต้องการคือ:

aaa-small.jpg  
bbb-small.jpg  
ccc-small.jpg  

ฉันจะทำอย่างไร

Brian Z avatar
uz flag
Mogrify เป็นคำสั่ง ImageMagick ที่ออกแบบมาสำหรับงานแบตช์ คำถามเกี่ยวข้องและอาจซ้ำกับคำถามนี้: https://superuser.com/questions/597428/how-can-i-run-mogrify-but-prefix-the-filename
Score:9
ธง hr

มันทึบอย่างน่าผิดหวังในเอกสาร แต่คุณสามารถผ่าน ยกมา เชลล์โกลบอลไปที่ แปลง (ยกมาเพื่อป้องกันเปลือกขยายก่อนเวลาอันควร) และการใช้งาน ชื่อไฟล์ เปอร์เซ็นต์ Escapes เพื่อสร้างชื่อไฟล์เอาต์พุตในรูปแบบ %[ชื่อไฟล์:ป้ายกำกับ] (ที่ไหน ฉลาก เป็นป้ายกำกับที่ผู้ใช้ระบุโดยพลการ) โดยใช้การป้อนชื่อฐาน %[ชื่อฐาน] หรือเทียบเท่ามรดก %t:

$ ls ???.jpg
aaa.jpg bbb.jpg ccc.jpg

แล้ว

$ แปลง '*.jpg' - ตั้งชื่อไฟล์:fn '%[ชื่อฐาน]-เล็ก' -ปรับขนาด 1200x900 '%[ชื่อไฟล์:fn].jpg'

ที่เกิดขึ้นใน

$ ls ???-small.jpg
aaa-small.jpg bbb-small.jpg ccc-small.jpg
Score:6
ธง jp

ในการวนรอบ คุณสามารถใช้คุณสมบัติที่อธิบายไว้ใน ผู้ชายทุบตี ที่

การขยายพารามิเตอร์
...
  ${พารามิเตอร์ %%word}
      ลบรูปแบบคำต่อท้ายที่ตรงกัน คำนี้ถูกขยายเพื่อสร้างรูปแบบเท่านั้น
      เช่นเดียวกับการขยายชื่อพาธ หากรูปแบบตรงกับส่วนต่อท้ายของ
      ค่าพารามิเตอร์ที่ขยายแล้วผลลัพธ์ของการขยายคือค่าที่ขยาย
      ค่าของพารามิเตอร์ที่มีรูปแบบการจับคู่ที่สั้นที่สุด (ตัวพิมพ์ ``%'') หรือ
      รูปแบบการจับคู่ที่ยาวที่สุด (ตัวพิมพ์ ``%%'') ถูกลบแล้ว ถ้าพารามิเตอร์เป็น @ หรือ *
      การดำเนินการลบรูปแบบจะใช้กับพารามิเตอร์ตำแหน่งแต่ละตัวตามลำดับ
      และส่วนขยายคือรายการผลลัพธ์ ถ้าพารามิเตอร์เป็นตัวแปรอาร์เรย์
      ห้อยท้ายด้วย @ หรือ * การดำเนินการลบรูปแบบจะถูกนำไปใช้กับสมาชิกแต่ละตัว
      ของอาร์เรย์ในทางกลับกัน และส่วนขยายคือรายการผลลัพธ์

หนึ่งซับต่อไปนี้ควรทำงาน

สำหรับ f ใน ./*.jpg ; ทำการแปลง "$f" -resize 1200x900 "${f%.jpg}-small.jpg" ; เสร็จแล้ว

ใช้งานได้ใน ทุบตีซึ่งเป็นเชลล์มาตรฐานของ Ubuntuผมว่าจำง่ายกว่าวิธีสวยหรูของ Steeldriver (ที่ใช้แต่ แปลง และไม่ สำหรับ สร้าง).

rexkogitans avatar
cn flag
+1 เนื่องจากเป็นไปตามปรัชญาของ Unix ที่ว่าแต่ละเครื่องมือควรทำงานส่วนเล็กๆ อย่างมีประสิทธิภาพ แทนที่จะใช้เครื่องมือเดียวทำทุกอย่าง
7efkvNEq avatar
gh flag
ฉันแนะนำให้เปลี่ยนชื่อไฟล์จาก `*.jpg` เป็น `./*.jpg` ในกรณีที่บางชื่อขึ้นต้นด้วย `-`
sudodus avatar
jp flag
@ 7efkvNEq ขอบคุณ นั่นเป็นความคิดที่ดี
Score:-2
ธง bd
mkdir เล็ก
สำหรับ f ใน *.jpg ; ทำการแปลง $f -resize 1200x900 small/$f ; เสร็จแล้ว
ru flag
สิ่งนี้ไม่ได้ตอบคำถาม ชื่อไฟล์เหมือนกัน
sudodus avatar
jp flag
@AlLelopath, True ชื่อไฟล์เหมือนกัน แต่อยู่ในไดเร็กทอรีอื่น ฉันใช้วิธีนี้และคิดว่ามันดี ;-)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา