Załóżmy, że mam pliki na dysku twardym posiadające rozszerzenia jako .md
.
Chcę przekształcić te wszystkie pliki .html
za pośrednictwem find
tej i -exec
opcji.
Polecenie przekonwertowania pliku przeceny na HTML to
markdown readme.md > readme.html
Próbuję użyć czegoś takiego:
find / -name "*.md" -type f -exec markdown {} > {}.html \;
Oczywiście powyższe nie działa. Jak mam to zrobić, używając tylko find
i exec
?
Odpowiedzi:
Musisz zacytować wokół konstruktu zawierającego,
>
ponieważ jest to znak specjalny powłoki, taki jak ten:Spowoduje to również zmianę nazw plików, więc
foo.html
zamiast tegofoo.md.html
:źródło
{}
na końcu obu poleceń? Poza tym w drugim poleceniu trudno jest mi śledzić, co się stało? Nie zrozumiałem tej${0%.md}/.html
części.${0%.md}/.html
.{}
jest argumentem wejściowym dlash -c
ciągu i jest dostępny jako$0
. Polecenie, którego nie rozumiesz, usuwa.md
i dodaje.html
. Prawdopodobnie masz rację, uciekając przed.
.md
i dodaje,.html
ale chciałbym dowiedzieć się więcej na ten temat. Czy możesz przekierować mnie do wiki / dokumentu, który to wyjaśnia?Sposobem na osiągnięcie dokładnie tego, co napisałeś, jest skorzystanie
markdown
z-o
opcji, która określa nazwę pliku wyjściowego, tjRobiąc to w ten sposób unika się uruchamiania nowej powłoki tylko po to, by uruchomić markdown.
Niestety, jak zauważa Bernhard, zrobienie tego w ten sposób daje pliki o nazwie
file.md.html
zamiastfile.html
, więc podejście Rush jest bardziej odpowiednie tutaj.źródło
markdown
nie ma-o
opcji. Sprawdziłem dwukrotnie przed komentowaniem.pandoc -f markdown -t html -o...
.