Vamos supor que eu tenha arquivos no meu disco rígido com extensões como .md
.
Eu quero converter todos esses arquivos para .html
através find
e a -exec
opção.
O comando para converter um arquivo de remarcação para html é
markdown readme.md > readme.html
Estou tentando usar algo como:
find / -name "*.md" -type f -exec markdown {} > {}.html \;
Obviamente, o acima não funciona. Então, como faço isso usando apenas find
e exec
?
Respostas:
Você precisa citar a construção que contém
>
porque é um caractere especial do shell, assim:Isso também renomeia os arquivos para que você termine em
foo.html
vez defoo.md.html
:fonte
{}
no final dos dois comandos? Além disso, no segundo comando, é difícil seguir para mim o que aconteceu? Eu não entendi a${0%.md}/.html
parte.${0%.md}/.html
.{}
é o argumento de entrada para ash -c
string e é acessado como$0
. O comando que você não entende tiras.md
e adiciona.html
. Provavelmente, você está certo ao escapar do.
.md
e acrescentando,.html
mas gostaria de saber mais sobre isso. Você pode me redirecionar para um wiki / documento que explica isso?A maneira de conseguir exatamente o que você escreveu é usar
markdown
a-o
opção 's' , que especifica o nome do arquivo de saída, ou seja,Fazer dessa maneira evita iniciar um novo shell apenas para executar a remarcação.
Infelizmente, como Bernhard aponta, fazer dessa maneira fornece arquivos nomeados em
file.md.html
vez defile.html
, portanto, a abordagem do rush é mais apropriada aqui.fonte
markdown
não tem uma-o
opção. Eu verifiquei duas vezes antes de comentar.pandoc -f markdown -t html -o...
.