확장명이 다음과 같이 하드 디스크에 파일이 있다고 가정합니다 .md
.
나는 모든 해당 파일을 변환 할 .html
를 통해 find
하고 -exec
옵션을 선택합니다.
마크 다운 파일을 html로 변환하는 명령은
markdown readme.md > readme.html
나는 다음과 같은 것을 사용하려고합니다 :
find / -name "*.md" -type f -exec markdown {} > {}.html \;
물론 위의 작동하지 않습니다. 그래서, 어떻게에만 사용하는 것이합니까 find
와 exec
?
답변
다음 >
과 같은 쉘 특수 문자이기 때문에 포함하는 구문을 인용해야합니다 .
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의 접근 방식이 더 적합합니다.