Как объединить эти команды в одну?

Вы отметили вопрос с oh-my-zsh, но не упоминал это в вопросе.

Я подозреваю, что oh-my-zsh создает свое собственное ls псевдоним. Если это произойдет после определения псевдонима то он переопределит Ваш.

Необходимо, вероятно, не прокомментировать DISABLE_LS_COLORS="true" в Вашем .zshrc, или помещенный Ваш псевдоним после строки, которая делает source $ZSH/oh-my-zsh.sh.

3
23.12.2018, 10:23
2 ответа

То, что вам нужно, это Xargs. Я не знаком с Pandoc, но что-то подобное должно работать:

$ find . -name \*.html -type f | sed 's/\.html$//' | xargs -I {} pandoc -f html -t markdown -s -o "{}.md" "{}.html"

Это использует «найти», чтобы перечислить все файлы .html в выбранном вами каталоге (и любых подкатах). Они трубаны для SED, которая откладывается от расширения «.html», а затем побудило к Xargs, которые питают их односторонним в Pandoc; PANDOC (если я правильно использовал синтаксис), затем принимает каждое имя (замещено для {}), использует каждый HTML-файл в качестве источника и выводы в новый файл с расширением MD в том же каталоге, что и исходный файл.

Вы должны в конечном итоге с исходными HTML-файлами и равным количеством соответствующих файлов MD в одном каталоге.

1
27.01.2020, 21:31

Использование xargsдля обработки вывода findдля многих людей выглядит как-то не так. вполне понятно. Может быть, перебрать все файлы с помощью циклаwhile read-проще для понимания?

find. -name "*.html" -type f | while read line ; do
    pandoc "${line}"   \
           -f html     \
           -t markdown \
           -s          \
           -o "${line%%.html}.md"
    done

Кавычки также используются для обозначения файлов, содержащих пробелы, на всякий случай. Конструкция ${line%%.html}— это «башизм», который может не работать в других оболочках. Он удаляет любой суффикс .html-из имени файла.

0
27.01.2020, 21:31

Теги

Похожие вопросы