Use o comando find para converter arquivos markdown para html

17

Vamos supor que eu tenha arquivos no meu disco rígido com extensões como .md .

Eu quero converter todos esses arquivos para .html a find e a opção -exec .

O comando para converter um arquivo de marcação em html é

markdown readme.md > readme.html

Estou tentando usar algo como:

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

Claro, o acima não funciona. Então, como faço isso usando apenas find e exec ?

    
por Abhijeet Rastogi 21.07.2012 / 19:14

2 respostas

15

Você precisa citar o constructo que contém > porque é um caractere especial do shell, como este:

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

Isso também renomeia os arquivos para que você tenha foo.html em vez de foo.md.html :

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

A maneira de obter exatamente o que você escreveu é usar a opção markdown do -o , que especifica o nome do arquivo de saída, ou seja,

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

Fazer isso dessa maneira evita iniciar um novo shell apenas para executar a redução de desempenho.

Infelizmente, como Bernhard ressalta, fazê-lo dessa maneira fornece arquivos com o nome file.md.html em vez de file.html , então a abordagem de rush é mais apropriada aqui.

    
por 22.07.2012 / 18:08

Tags