find 명령을 사용하여 마크 다운 파일을 HTML로 변환


17

확장명이 다음과 같이 하드 디스크에 파일이 있다고 가정합니다 .md.

나는 모든 해당 파일을 변환 할 .html를 통해 find하고 -exec옵션을 선택합니다.

마크 다운 파일을 html로 변환하는 명령은

markdown readme.md > readme.html

나는 다음과 같은 것을 사용하려고합니다 :

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

물론 위의 작동하지 않습니다. 그래서, 어떻게에만 사용하는 것이합니까 findexec?


답변:


16

다음 >과 같은 쉘 특수 문자이기 때문에 포함하는 구문을 인용해야합니다 .

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

또한 파일 이름이 바뀌어 foo.html대신에 foo.md.html다음 과 같이 끝납니다 .

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

지금 file.md.html을 얻지 못합니까? file.html 대신?
Bernhard

@rush 왜 {}두 명령 모두 끝에 있어야 합니까? 또한 두 번째 명령에서 무슨 일이 있었는지 따라하기가 어렵습니까? 나는 그 ${0%.md}/.html부분을 이해하지 못했다 .
Abhijeet Rastogi

Btw, 방금 확인했습니다. 에서 실수로 슬래시를 썼습니다 ${0%.md}/.html.
Abhijeet Rastogi

@shadyabhi final {}sh -c문자열 의 입력 인수 이며로 액세스됩니다 $0. 이해하지 못하는 명령은 제거 .md하고 추가합니다 .html. 당신은 바로 탈출로 아마있어.
베른하르트

@Bernhard 답장을 보내 주셔서 감사합니다. 솔직히, 나는 또한 그것이 스트리핑 .md되고 추가 .html되고 있음을 알고 있었지만 그것에 대해 더 알고 싶습니다. 이것을 설명하는 wiki / doc으로 리디렉션 할 수 있습니까?
Abhijeet Rastogi

0

작성한 것을 정확하게 달성하는 방법 은 출력 파일의 이름을 지정하는 markdown-o옵션 을 사용 하는 것입니다.

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

이렇게하면 마크 다운을 실행하기 위해 새 셸을 시작하지 않아도됩니다.

불행히도 Bernhard가 지적 했듯이이 방법을 사용하면 file.md.html대신 이름이 지정된 파일이 제공 file.html되므로 rush의 접근 방식이 더 적합합니다.


1
그러나 옵션 markdown이 없습니다 -o. 댓글을 달기 전에 다시 확인했습니다.
Abhijeet Rastogi

markdown (1) 은 그렇지 않지만 다른 버전을 가지고 있습니까?
Mikel

1
당신은 또한 사용할 수 있습니다 pandoc -f markdown -t html -o....
Mikel

Ohk, 내가 사용하고 있었다 daringfireball.net/projects/markdown 그리고 그이 없습니다.
Abhijeet Rastogi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.