![find 명령을 사용하여 마크다운 파일을 html로 변환](https://linux55.com/image/24097/find%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%A7%88%ED%81%AC%EB%8B%A4%EC%9A%B4%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20html%EB%A1%9C%20%EB%B3%80%ED%99%98.png)
내 하드 드라이브에 확장 프로그램이 있다고 가정해 보겠습니다 .md
.
.html
이 파일들을 모두 스루 find
와 옵션 으로 변환하고 싶습니다 -exec
.
Markdown 파일을 html로 변환하는 명령은 다음과 같습니다.
markdown readme.md > readme.html
나는 다음과 같은 것을 사용하려고합니다 :
find / -name "*.md" -type f -exec markdown {} > {}.html \;
물론 위의 방법은 통하지 않습니다. 그렇다면 find
and 만 사용하여 이 작업을 어떻게 수행 할 수 있습니까 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
여기서는 급한 접근 방식이 더 적합합니다.