Supposons que j'ai des fichiers sur mon disque dur ayant des extensions comme .md
.
Je veux convertir tous les fichiers à .html
travers find
et l' -exec
option.
La commande pour convertir un fichier 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 uniquement find
et exec
?
Réponses:
Vous devez citer autour de la construction contenant
>
car c'est un caractère spécial shell, comme ceci:Cela renommera également les fichiers afin que vous vous retrouviez avec
foo.html
au lieu defoo.md.html
:la source
{}
à la fin des deux commandes? De plus, dans la deuxième commande, il est difficile de suivre pour moi ce qui s'est passé? Je n'ai pas compris la${0%.md}/.html
partie.${0%.md}/.html
.{}
est l'argument d'entrée de lash -c
chaîne, et y est accessible en tant que$0
. La commande que vous ne comprenez pas les bandes.md
et ajoute.html
. Vous avez probablement raison d'échapper au.
.md
et ajoute,.html
mais j'aimerais en savoir plus. Pouvez-vous me rediriger vers un wiki / doc qui explique cela?La façon d'obtenir exactement ce que vous avez écrit est d'utiliser
markdown
l'-o
option de, qui spécifie le nom du fichier de sortie, c'est-à-direFaire de cette façon évite de démarrer un nouveau shell juste pour exécuter le démarquage.
Malheureusement, comme le souligne Bernhard, le faire de cette façon vous donne des fichiers nommés
file.md.html
au lieu defile.html
, donc l'approche de rush est plus appropriée ici.la source
markdown
n'a pas d'-o
option. J'ai revérifié avant de commenter.pandoc -f markdown -t html -o...
.