Markdown dosyalarını HTML'ye dönüştürmek için find komutunu kullanın


17

Diyelim ki sabit diskimde uzantıları olan dosyalar var .md.

Ben tüm bu dosyaları dönüştürmek istediğiniz .htmliçinden findve -execopsiyon.

Bir markdown dosyasını html'ye dönüştürme komutu:

markdown readme.md > readme.html

Gibi bir şey kullanmaya çalışıyorum:

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

Tabii ki, yukarıdaki işe yaramıyor. Peki, bunu sadece findve nasıl kullanarak yapabilirim exec?


Yanıtlar:


16

İçindeki yapı etrafında alıntı yapmanız gerekir, >çünkü bu bir kabuk özel karakteri, şöyle:

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

Bu ayrıca dosyaları yeniden adlandırır, böylece aşağıdakiler foo.htmlyerine sonuçlanır foo.md.html:

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

Şimdi file.md.html dosyasını almadınız mı? File.html yerine?
Bernhard

@rush Sonunda neden {}her iki komutta da ihtiyacım var ? Ayrıca, ikinci komutta, neler olduğunu benim için takip etmek zor mu? Parçayı anlamadım ${0%.md}/.html.
Abhijeet Rastogi

Btw, az önce kontrol ettim. muhtemelen yanlışlıkla eğik çizgi yazdınız ${0%.md}/.html.
Abhijeet Rastogi

@shadyabhi Final {}, sh -cdize için giriş argümanıdır ve orada olarak erişilir $0. Anlamadığınız komut şeritleri .mdve ekler .html. Muhtemelen kaçmakta haklısın.
Bernhard

@Bernhard Yanıtınız için teşekkürler. Dürüst olmak gerekirse, daha önce de sıyırma .mdve ekleme olduğunu biliyordum .htmlama bunun hakkında daha fazla bilgi edinmek istiyorum. Beni bunu açıklayan bir wiki / doc'ye yönlendirebilir misin?
Abhijeet Rastogi

0

Tam olarak yazdıklarınızı elde etmenin yolu , çıktı dosyasının adını belirten markdown's -oseçeneğini kullanmaktır.

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

Bu şekilde yapmak, sadece işaretleme yapmak için yeni bir kabuk başlatmayı önler.

Ne yazık ki, Bernhard'ın belirttiği gibi, bunu yapmak size file.md.htmlbunun yerine adlandırılmış dosyalar verir file.html, bu yüzden acele yaklaşımı burada daha uygundur.


1
Ancak, markdownbir -oseçeneği yoktur. Yorum yapmadan önce iki kez kontrol ettim.
Abhijeet Rastogi

markdown (1) diyor, ama belki farklı bir versiyonunuz var?
Mikel

1
Ayrıca kullanabilirsiniz pandoc -f markdown -t html -o....
Mikel

Ohk, daringfireball.net/projects/markdown kullanıyordum ve buna sahip değil.
Abhijeet Rastogi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.