Предположим, у меня есть файлы на жестком диске, имеющие расширения как .md
.
Я хочу, чтобы преобразовать все эти файлы в .html
сквозной find
и -exec
вариант.
Команда для преобразования файла уценки в HTML
markdown readme.md > readme.html
Я пытаюсь использовать что-то вроде:
find / -name "*.md" -type f -exec markdown {} > {}.html \;
Конечно, вышесказанное не работает. Итак, как мне это сделать, используя только find
и exec
?
Ответы:
Вам нужно заключить в кавычки конструкцию, содержащую,
>
потому что это специальный символ оболочки, например:Это также переименует файлы, так что вы получите
foo.html
вместоfoo.md.html
:источник
{}
в конце в обеих командах? Кроме того, во второй команде мне трудно следить за тем, что произошло? Я не понял${0%.md}/.html
часть.${0%.md}/.html
.{}
- входной аргумент дляsh -c
строки, доступ к которому осуществляется как$0
. Команда, которую вы не понимаете, разбивает.md
и добавляет.html
. Вы, вероятно, правы, избежав.
.md
и добавление,.html
но я хотел бы узнать больше об этом. Можете ли вы перенаправить меня на вики / документ, который объясняет это?Чтобы добиться именно того, что вы написали, используйте опцию
markdown
's-o
, которая указывает имя выходного файла, т.е.Делая это таким образом, вы избегаете запуска новой оболочки только для запуска уценки.
К сожалению, как указывает Бернхард, если вы сделаете это таким образом, вы получите имена файлов
file.md.html
вместоfile.html
, поэтому подход rush здесь более уместен.источник
markdown
не имеет-o
выбора. Я дважды проверил, прежде чем комментировать.pandoc -f markdown -t html -o...
.