내 하드 드라이브에 확장 프로그램이 있다고 가정해 보겠습니다 .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
여기서는 급한 접근 방식이 더 적합합니다.