ใช้คำสั่ง find เพื่อแปลงไฟล์ markdown เป็น html


17

.mdให้คิดว่าฉันมีไฟล์บนฮาร์ดดิสก์ของฉันที่มีนามสกุลเป็น

ฉันต้องการที่จะแปลงไฟล์เหล่านั้นทั้งหมดจะ.htmlผ่านfindและ-execตัวเลือก

คำสั่งในการแปลงไฟล์ markdown เป็น html คือ

markdown readme.md > readme.html

ฉันกำลังพยายามใช้สิ่งที่ชอบ:

find / -name "*.md" -type f -exec markdown {} > {}.html \;

แน่นอนข้างต้นไม่ทำงาน ดังนั้นฉันจะใช้วิธีนี้ได้อย่างไรfindและexec?


ที่เกี่ยวข้อง: unix.stackexchange.com/questions/39654/…
Bernhard

คำตอบ:


16

คุณต้องพูดถึงโครงสร้างที่มีอยู่>เพราะเป็นอักขระพิเศษของเชลล์เช่นนี้:

find / -name "*.md" -type f -exec sh -c 'markdown "$0" > "$0.html"' {} \;

นี่จะเป็นการเปลี่ยนชื่อไฟล์ด้วยดังนั้นคุณจะได้foo.htmlแทนที่foo.md.html:

find / -name "*.md" -type f -exec sh -c 'markdown "${0}" > "${0%.md}.html"' {} \;

คุณไม่ได้รับ file.md.html เลยเหรอ? แทนที่จะเป็น file.html
แบร์นฮาร์ด

@rush ทำไมฉันถึงต้องการ{}ที่สิ้นสุดในคำสั่งทั้งสอง? นอกจากนี้ในคำสั่งที่สองมันยากที่จะตามหาฉันว่าเกิดอะไรขึ้น? ฉันไม่เข้าใจ${0%.md}/.htmlส่วนนั้น
Abhijeet Rastogi

Btw ฉันเพิ่งตรวจสอบ ${0%.md}/.htmlคุณอาจเขียนทับโดยไม่ได้ตั้งใจใน
Abhijeet Rastogi

@shadyabhi สุดท้าย{}คือการโต้แย้งการป้อนข้อมูลสำหรับสตริงและมีเข้าถึงได้เป็นsh -c $0คำสั่งที่คุณไม่เข้าใจแถบและเพิ่ม.md .htmlคุณอาจถูกต้องกับการหลบหนี.
แบร์นฮาร์ด

@Bernhard ขอบคุณสำหรับการตอบกลับ สุจริตฉันรู้ก่อนหน้านี้ว่ามันลอก.mdและเพิ่ม.htmlแต่ฉันต้องการทราบเพิ่มเติมเกี่ยวกับมัน คุณช่วยพาฉันไปที่ wiki / doc ที่อธิบายเรื่องนี้ได้ไหม
Abhijeet Rastogi

0

วิธีการเพื่อให้บรรลุสิ่งที่คุณได้เขียนคือการใช้งานmarkdownของ-oตัวเลือกซึ่งระบุชื่อของไฟล์ที่ส่งออกคือ

find / -name "*.md" -type f -exec markdown -o {}.html {} \;

การทำเช่นนี้จะช่วยหลีกเลี่ยงการเริ่มเชลล์ใหม่เพื่อรันมาร์คดาวน์

น่าเสียดายที่เบอร์นฮาร์ดชี้ให้เห็นการทำเช่นนี้จะทำให้คุณตั้งชื่อไฟล์ file.md.htmlแทนfile.htmlดังนั้นวิธีการเร่งด่วนคือเหมาะสมมากกว่าที่นี่


1
แต่markdownไม่มี-oตัวเลือก ฉันตรวจสอบซ้ำก่อนแสดงความคิดเห็น
Abhijeet Rastogi

markdown (1)บอกว่ามันทำ แต่บางทีคุณอาจมีเวอร์ชั่นที่แตกต่างออกไป?
มิเคล

1
pandoc -f markdown -t html -o...นอกจากนี้คุณยังสามารถใช้
มิเคล

โอ้ฉันใช้daringfireball.net/projects/markdownและมันไม่มีสิ่งนั้น
Abhijeet Rastogi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.