Utilisez la command find pour convertir les files de démarquage en html

Supposons que j'ai des files sur mon disque dur ayant des extensions comme .md .

Je veux convertir tous ces files en .html via find et l'option -exec .

La command pour convertir un file de démarque en html est

 markdown readme.md > readme.html 

J'essaie d'utiliser quelque chose comme:

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

Bien sûr, ce qui précède ne fonctionne pas. Alors, comment puis-je faire cela en utilisant seulement find et exec ?

Vous devez citer autour de la construction contenant > car c'est un caractère spécial shell, comme ceci:

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

Cela permettra également de renommer les files afin que vous vous foo.html avec foo.html au lieu de foo.md.html :

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

La façon de réaliser exactement ce que vous avez écrit est d'utiliser l'option -o markdown , qui spécifie le nom du file de sortie, c'est-à-dire

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

Le faire de cette façon évite de démarrer un nouveau shell juste pour exécuter démarque.

Malheureusement, comme le souligne Bernhard, le faire de cette façon vous donne des files nommés file.md.html au lieu de file.html , donc l'approche de rush est plus appropriée ici.