मार्कडाउन फाइल को html में बदलने के लिए फाइंड कमांड का उपयोग करें


17

मान लें कि मेरे पास हार्डडिस्क पर फाइलें हैं जैसे एक्सटेंशन हैं .md

मैं उन सभी फाइलों को .htmlमाध्यम findऔर -execविकल्प में बदलना चाहता हूं ।

Html में मार्कडाउन फाइल को कन्वर्ट करने का कमांड है

markdown readme.md > readme.html

मैं कुछ का उपयोग करने की कोशिश कर रहा हूँ जैसे:

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

बेशक, ऊपर काम नहीं करता है। तो, मैं कैसे करते हैं कि केवल findऔर का उपयोग कर exec?


जवाबों:


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
अभिजीत रस्तोगी

Btw, मैंने अभी-अभी जाँच की है। आपने शायद गलती से आगे स्लैश लिखा है ${0%.md}/.html
अभिजीत रस्तोगी

@shadyabhi अंतिम स्ट्रिंग के {}लिए इनपुट तर्क है sh -c, और वहाँ तक पहुँचा जा सकता है $0। कमांड जिसे आप स्ट्रिप्स नहीं समझते हैं .mdऔर जोड़ता है .html। आप शायद भागने के साथ सही हैं.
बर्नहार्ड

@ बर्नहार्ड आपके उत्तर के लिए धन्यवाद। ईमानदारी से, मैं पहले भी जानता था कि यह अलग करना .mdऔर जोड़ना है, .htmlलेकिन मैं इसके बारे में अधिक जानना चाहूंगा। क्या आप मुझे एक विकि / डॉक पर पुनर्निर्देशित कर सकते हैं जो यह बताता है?
अभिजीत रस्तोगी

0

जिस तरह से वास्तव में प्राप्त करने के लिए आप क्या लिखा है उपयोग करने के लिए है markdownकी -oविकल्प है, जो आउटपुट फ़ाइल का नाम निर्दिष्ट अर्थात

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

इसे इस तरह से करना सिर्फ एक नया खोल शुरू करने से बचा जाता है।

दुर्भाग्य से, जैसा कि बर्नहार्ड बताते हैं, इस तरह से करने से आपको file.md.htmlइसके बजाय नाम वाली फाइलें मिलती हैं file.html, इसलिए यहां भीड़ का दृष्टिकोण अधिक उपयुक्त है।


1
परंतु, markdown एक -oविकल्प नहीं है । मैंने टिप्पणी करने से पहले डबल-चेक किया।
अभिजीत रस्तोगी

markdown (1) का कहना है कि यह करता है, लेकिन शायद आपके पास एक अलग संस्करण है?
मिकेल

1
आप भी इस्तेमाल कर सकते हैं pandoc -f markdown -t html -o...
मिकेल

Ohk, मैं उपयोग कर रहा था daringfireball.net/projects/markdown और यह है कि जरूरत नहीं है।
अभिजीत रस्तोगी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.