Supongamos que tengo archivos en mi disco duro con extensiones como .md
.
Quiero convertir todos esos archivos a .html
través find
y la -exec
opción.
El comando para convertir un archivo markdown a html es
markdown readme.md > readme.html
Estoy tratando de usar algo como:
find / -name "*.md" -type f -exec markdown {} > {}.html \;
Por supuesto, lo anterior no funciona. Entonces, ¿cómo hago eso usando solo find
y exec
?
Respuestas:
Debe citar alrededor de la construcción que contiene
>
porque es un carácter especial de shell, como este:Esto también cambiará el nombre de los archivos para que termines en
foo.html
lugar defoo.md.html
:fuente
{}
al final en ambos comandos? Además, en el segundo comando, ¿es difícil de seguir para mí lo que sucedió? No entendí la${0%.md}/.html
parte.${0%.md}/.html
.{}
es el argumento de entrada para elsh -c
cadena, y allí se accede como$0
. El comando que no entiendes elimina.md
y agrega.html
. Probablemente tienes razón con escapar de la.
.md
y agregando,.html
pero me gustaría saber más al respecto. ¿Me puede redirigir a un wiki / documento que explica esto?La manera de lograr exactamente lo que ha escrito es usar
markdown
la-o
opción, que especifica el nombre del archivo de salida, es decirHacerlo de esta manera evita iniciar un nuevo shell solo para ejecutar Markdown.
Desafortunadamente, como señala Bernhard, hacerlo de esta manera le da archivos nombrados en
file.md.html
lugar defile.html
, por lo que el enfoque de rush es más apropiado aquí.fuente
markdown
no tiene una-o
opción. Verifiqué dos veces antes de comentar.pandoc -f markdown -t html -o...
.