Score:2

วิธีแปลง JPG ทั้งหมดเป็น PDF ซ้ำในแต่ละโฟลเดอร์โดยใช้ img2pdf ซ้ำ

ธง us
Sam

ฉันมีโฟลเดอร์สามระดับเช่น main, sub-1 และ sub-2 โฟลเดอร์หลักของฉันมีโฟลเดอร์ย่อย 1 จำนวนมากและโฟลเดอร์ย่อย 1 มีโฟลเดอร์ย่อย 2 จำนวนมากที่มีรูปภาพ JPG อยู่ข้างใน

ฉันคัดลอกไฟล์ JPG จาก sub-2 ไปยังโฟลเดอร์หลัก sub-1 จากโฟลเดอร์หลักโดยใช้คำสั่งนี้

หา . -พิมพ์ f -name "*.jpg" -exec sh -c 'for p; ทำ
  cp "$p" "${p%/*/*}"
เสร็จแล้ว' _ {} +

ตอนนี้ฉันต้องแปลง jpgs ทั้งหมดเป็นไฟล์ pdf ไฟล์เดียวในแต่ละโฟลเดอร์ย่อย 1 จากโฟลเดอร์หลักของฉัน ดังนั้นจะมี jpgs ที่คัดลอกทั้งหมดของฉันพร้อมกับ pdf ที่แปลงแล้วใน sub-1 (ชื่อ pdf ควรเป็นชื่อโฟลเดอร์ เช่น: sub- 1). หลังจากแปลงเสร็จแล้ว ฉันต้องลบ jpgs ที่คัดลอกไว้เฉพาะในโฟลเดอร์ย่อย 1 (ไม่ใช่ jpgs ดั้งเดิม) ดังนั้นจะมีโฟลเดอร์ย่อย 2 หลายโฟลเดอร์พร้อมไฟล์ pdf ไฟล์เดียว

ฉันใช้ไลบรารี img2pdf เพื่อปกปิดรูปภาพของฉัน และฉันลองคำสั่งนี้ด้านล่าง มันใช้งานไม่ได้ ฉันไม่พบวิธีแก้ปัญหาใด ๆ ตอนนี้ฉันจะทำให้งานนี้ได้อย่างไร

หา . -name '*.jpg' -type f -exec bash -c 'img2pdf *.jpg -o "${PWD##*/}".pdf' {} + \
sudodus avatar
jp flag
การใช้เครื่องหมายอัญประกาศเดี่ยว `'` อาจทำให้ ${...} ขยายไม่ได้ตามที่ตั้งใจไว้ฉันคิดว่าคุณไม่จำเป็นต้องห่อ 'imp2pdf command line' ใน `bash -c ' ...'`
Sam avatar
us flag
Sam
ฉันพยายามยังไม่ทำงาน
sudodus avatar
jp flag
ตกลง. ฉันต้องตรวจสอบรายละเอียดโดยการทดสอบ ดูคำตอบด้านล่าง
Score:1
ธง jp

ฉันทำการทดสอบบางอย่างในแผนผังไดเร็กทอรี Photos และระบบต่อไปนี้ที่มีเชลล์สคริปต์สองตัวใช้งานได้สำหรับฉัน

แรก:

#!/bin/bash

ค้นหา * -type d -exec วินาที {} \;
เสียงก้อง ""

ที่สอง:

#!/bin/bash

num=$(ls "$1"/*.jpg 2> /dev/null | wc -l)
ถ้า [ $num -ne 0 ]
แล้ว
 เสียงสะท้อน -n "."
 img2pdf -o "$1/${1//\//-}_${num}_pictures".pdf "$1"/*.jpg
ไฟ

แก้ไขสองครั้ง: สคริปต์สำรอง ที่สอง สร้างไฟล์ pdf โดยไม่มีรูปภาพและ 'รูปภาพ' ในชื่อ:

#!/bin/bash

num=$(ls "$1"/*.jpg 2> /dev/null | wc -l)
ถ้า [ $num -ne 0 ]
แล้ว
 เสียงสะท้อน -n "."
 img2pdf -o "$1/${1##*/}".pdf "$1"/*.jpg
ไฟ
  • คัดลอกและวางจากพื้นที่โค้ดลงในโปรแกรมแก้ไขข้อความและสร้างไฟล์ แรก และ ที่สอง

  • ทำให้พวกเขาปฏิบัติการได้

    chmod +x วินาทีแรก
    
  • ย้ายไปยังไดเร็กทอรีใน PATH หากเป็นการใช้งานส่วนตัวของคุณเท่านั้น ให้ [สร้างและ] ย้ายเข้าไป ~/ถังขยะ. มิฉะนั้น หากผู้ใช้รายอื่นควรใช้ shellscripts เหล่านี้ด้วย ให้ย้ายเข้าไป /usr/local/bin

    mkdir ~/bin
    mv วินาทีแรก ~/bin
    

    คุณอาจต้องรีบูตเพื่อรับ ~/ถังขยะ เข้าสู่เส้นทางของคุณ

ตอนนี้คุณพร้อมที่จะใช้มันแล้ว เปลี่ยนไดเร็กทอรีไปที่ด้านบนหรือแผนผังไดเร็กทอรีที่คุณมีรูปภาพและเรียกใช้ แรก.

ตัวอย่าง (แต่คุณมีชื่อท้องถิ่นไม่ใช่รูปภาพเหมือนภาษาอังกฤษ)

ซีดี ~/รูปภาพ
แรก

มันจะเขียนจุดไปที่หน้าต่างเทอร์มินัลสำหรับแต่ละไดเร็กทอรีย่อยซึ่งพบรูปภาพอย่างน้อยหนึ่งรูปและสร้างไฟล์ pdf

คุณสามารถค้นหาไฟล์ pdf ด้วยคำสั่งต่อไปนี้

ค้นหาชื่อ "*.pdf"

การแก้ไขที่สำคัญ:

หลังจากการพูดคุยกับผู้โพสต์ต้นฉบับ ฉันคิดว่าฉันเข้าใจโครงสร้างของไดเร็กทอรีไดเร็กทอรีที่จะประมวลผลแล้ว สำเนาของไฟล์ในระดับที่ต่ำกว่าจะอยู่ในไดเร็กทอรีย่อย 1 ที่มีชื่อบุคคล ไฟล์ในไดเร็กทอรีย่อย 1 เหล่านี้จะถูกรวมเป็นไฟล์ pdf

ตัวอย่าง:

$ ต้นไม้ -U
.
âââ อดัม
â âââ mkusb-minp-2-crop.jpg
â âââ us_keyboard_for_sudo_password.jpg
â âââ nautilus-เชื่อมต่อกับเซิร์ฟเวอร์-2.jpg
â âââ รูปที่ 1
â  â âââ mkusb-minp-2-crop.jpg
â  â  âââ nautilus-เชื่อมต่อกับเซิร์ฟเวอร์-2.jpg
â âââ รูปที่ 2
â  â âââ us_keyboard_for_sudo_password.jpg
â âââ adam.pdf
âââ เบ็ตตี้
    âââ nautilus-เชื่อมต่อกับเซิร์ฟเวอร์-1.jpg
    âââ mkusb-minp-3-cropx.jpg
    âââ รูปที่1
    â âââ nautilus-เชื่อมต่อกับเซิร์ฟเวอร์-1.jpg
    â âââ คาลามาเรส-เมานต์-failed.jpg
    âââ ภาพที่ 2
    â âââ mkusb-minp-3-cropx.jpg
    âââ คาลามาเรส-เมานต์-failed.jpg
    âââ betty.pdf

6 ไดเร็กทอรี 14 ไฟล์

หากคุณเปลี่ยนไดเร็กทอรีการทำงานด้วย ซีดี ไปยังตำแหน่งของไดเร็กทอรีชื่อเหล่านี้ คุณสามารถใช้การแก้ไขต่อไปนี้ แรก เชลล์สคริปต์

#!/bin/bash

ค้นหา -minความลึก 1 -สูงสุดความลึก 1 -ประเภท d -exec วินาที {} \;
เสียงก้อง ""

มันจะเรียกใช้ ที่สอง shellscript เฉพาะในไดเร็กทอรีชื่อและไม่มองหาสิ่งที่อยู่ใน [บนหรือ] ระดับล่างของไดเร็กทอรีทรี

ต่อไปนี้จะแสดงให้เห็นว่า หา ค้นหาเฉพาะไดเร็กทอรีชื่อ

$ หา -ความลึกขั้นต่ำ 1 -ความลึกสูงสุด 1
./อดัม
./เบ็ตตี้
sudodus avatar
jp flag
หากคุณมีชื่อไฟล์ที่มีช่องว่างอาจมีปัญหา ทางออกหนึ่งสามารถทำได้แต่คำสั่งที่มี `img2pdf` ลงในไฟล์ [shellscript] ที่สองขนาดเล็ก และเรียก shellscript ในบรรทัดคำสั่งด้วย 'find' ด้วยวิธีนี้ คุณสามารถใส่เครื่องหมายอัญประกาศคู่รอบไฟล์: `"*.jpg"` ใน shellscript ตัวที่สองขนาดเล็ก อีกทางเลือกหนึ่งคือการแทนที่ช่องว่างด้วยขีดล่าง: `"ชื่อไฟล์ที่มีช่องว่าง"` --> "`ชื่อไฟล์_พร้อมขีดล่าง"`
Sam avatar
us flag
Sam
ฉันลองสคริปต์ของคุณแล้ว มันกำลังสร้างไฟล์ PDF เปล่าๆ ในแต่ละไดเร็กทอรีที่มีชื่อผิด ชื่อโฟลเดอร์ของฉันเป็นภาษาอารบิก
sudodus avatar
jp flag
มันใช้งานได้สำหรับฉันกับภาษายุโรปตะวันตกที่ไม่ใช่ภาษาอังกฤษ เป็นไปได้ว่าคุณมีปัญหาเนื่องจากชื่อโฟลเดอร์หรือชื่อไฟล์ ฉันขอแนะนำให้คุณสร้างไฟล์ [shellscript] ไฟล์ที่สองและทำให้มันใช้งานได้กับไดเร็กทอรีเดียว จากนั้นสร้างไฟล์ [master shellscript] แรกด้วย 'find' ที่เรียก shellscript ที่สองสำหรับแต่ละไดเร็กทอรีย่อยที่มีไฟล์ คุณสามารถทำได้ด้วยตัวเองหรือคุณต้องการความช่วยเหลือ? (คุณอาจต้องการความช่วยเหลือจากคนที่ใช้ภาษาเดียวกัน)
Sam avatar
us flag
Sam
ฉันยังใหม่กับสคริปต์นี้ ฉันคิดว่าอาจต้องการความช่วยเหลือ
sudodus avatar
jp flag
ตกลง @Looper ฉันเพิ่มรายละเอียดวิธีสร้างระบบด้วยสองสคริปต์โดยที่ 'ตัวแรก' เรียก 'ตัวที่สอง' สำหรับแต่ละไดเร็กทอรีย่อย สิ่งนี้ใช้ได้สำหรับฉันและฉันหวังว่าจะใช้ได้กับภาษาอาหรับด้วย หากคุณไม่ต้องการความช่วยเหลือจากคนอื่น ใครจะรู้ภาษาอาหรับและ/หรือผู้ที่รู้วิธีจัดการอักขระพิเศษในชื่อไฟล์ดีกว่า
Sam avatar
us flag
Sam
ฉันกำลังเรียกใช้สคริปต์ใน Ubuntu โดย WSL2 ดังนั้นฉันต้องย้ายเชลล์สคริปต์ทั้งสองที่นี่ที่ไหน ฉันสับสน (โปรดทราบว่าฉันไม่มีสิทธิ์ของผู้ดูแลระบบ)
sudodus avatar
jp flag
ให้เรา [ดำเนินการสนทนาต่อในการแชท](https://chat.stackexchange.com/rooms/129154/discussion-between-sudodus-and-looper)
sudodus avatar
jp flag
@Looper ตกลง ฉันไม่รู้ว่าคุณต้องการอะไรกันแน่ ฉันคิดว่าเป็นการดีที่สุดที่จะใส่ชื่อบางอย่างเพื่อหลีกเลี่ยงการให้ชื่อเดียวกันกับหลาย ๆ ไฟล์ แต่บางทีการแก้ไขครั้งที่สองของไฟล์ที่สองอาจใช้ได้ผลสำหรับคุณ

โพสต์คำตอบ

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