2016-07-10 2 views
0

У меня есть некоторые файлы на мой проект с расширениями, как .md.
Я хочу, чтобы преобразовать все эти файлы в .html через найти команду.
Команды Я использую для преобразования markdown файла html является:
md2html file.md > file.html
Как я могу это сделать?
И если я хочу сохранить файлы HTML в другом каталоге?как конвертировать уценки файлы HTML с командой поиска

+0

команда Use'find' сделать это – sjsam

ответ

1

Используйте find/read комбинацию команд, чтобы сделать это:

find /your/path/to/mdfiles -type f -name "*.md" -printf "%f\0"\ 
| while read -rd '' filename 
do 
    md2html "${filename}" "/your/html/dir/${filename%.md}.html" 
done 

должны это сделать.


Разъяснения

  • find /your/path/to/mdfiles -type f -name "*.md" находит все файлы, которые имеют расширение, .md.
  • Мы синтаксический результирующие строки/имена файлов с помощью while-read -rd ''
  • ${filename%.md} обрезает .md в конце каждого файла
  • Так ${filename%.md}.html вырезание .md и добавляет .html
  • md2html ${filename} "${filename%.md}.html" делает работу для каждого файла, который проходил мимо найти команду.
  • -printf "%f\0" дает базовые имена файлов с нулевым завершением, что полезно, если вы хотите скопировать файлы в другой каталог.

Чуть короче vresion

find . -type f -name "*.md" -printf "%f\0" -exec bash -c 'md2html "$1" "/your/html/dir/${1%.md}.html"' _ {} \; 

Заменить /your/html/dir/ с your path

+0

Это только печать, не создавая файлы HTML – Albert

+0

@Albert К сожалению был излишним '-print0' в сценарии, который я только что сняли. Попробуйте обе версии и lemme знаете результат – sjsam

+0

Еще один вопрос: если я хочу взять только имя файла без всего пути, что мне нужно добавить? – Albert

1

Вы могли бы сделать что-то вроде:

find path -type f -name "*.md" -exec sh -c 'md2html "${0}" > "${0%md}.html"' {} \; 
  • Путь вам нужно будет указать каталог, в котором вы хотите найти файлы md.
  • Тип говорит, что вы хотите искать файл, а не каталоги.
  • имя говорит, что вы хотите искать все файлы с расширением md.
  • exec выполнит команду над найденными файлами.
+0

Вы можете немного изменить это, чтобы получить выходной файл' foo.html' вместо 'foo.md.html' : '-exec sh -c 'md2html" $ 0 "" $ {0% md} html "' {} \;'. Это также позволит избежать любых проблем, если найденный файл имеет пробелы или другие символы, которые должны быть указаны в имени файла. – chepner

+0

Да, спасибо @chepner, что имеет смысл .... – SMA

Смежные вопросы