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

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

내 하드 드라이브에 확장 프로그램이 있다고 가정해 보겠습니다 .md.

.html이 파일들을 모두 스루 find와 옵션 으로 변환하고 싶습니다 -exec.

Markdown 파일을 html로 변환하는 명령은 다음과 같습니다.

markdown readme.md > readme.html

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

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

물론 위의 방법은 통하지 않습니다. 그렇다면 findand 만 사용하여 이 작업을 어떻게 수행 할 수 있습니까 exec?

답변1

>포함된 구문 은 다음과 같이 셸 특수 문자이므로 따옴표로 묶어야 합니다 .

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

답변2

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

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

이렇게 하면 단지 마크다운을 실행하기 위해 새 셸을 시작하는 것을 피할 수 있습니다.

불행하게도 Bernhard가 지적했듯이 이렇게 하면 file.md.html대신에 이름이 지정된 파일이 제공되므로 file.html여기서는 급한 접근 방식이 더 적합합니다.

관련 정보