find 명령을 사용하여 마크 다운 파일을 HTML로 변환 파일을 html로 변환하는 명령은 markdown readme.md

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

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

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

markdown readme.md > readme.html

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

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

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



답변

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

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"' {} \;

답변

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

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

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

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