find {} возвращает полное имя файла, но я просто хочу имя файла без расширения, поэтому index.md вернет индекс вместо index.md

Так что я

find . -name \*.md -type f -exec pandoc --filter ./filter1.py -o {}.html {} 

И обратите внимание на {}.html . {} Возвращает имя файла, заканчивающееся на .md , но я хочу, чтобы он просто возвращал имя файла без .md , поэтому скажем, что у меня есть файл с именем index.md , {} должен возвращать index , в результате чего создается файл с именем index.html , а затем приводит к имени файла с именем index.md.html .

Итак, как мне поступить об удалении .md в этой команде?

  • Преобразовать glob в `find`
  • find arcana: невозможно заставить трубу работать в линии -exec
  • Как найти только файлы, с которыми успешно завершена команда xyz?
  • комбинировать поиск с другими командами: когда использовать -exec и когда использовать трубу?
  • Найти новый файл. Несколько ограничений типа файлов
  • Как использовать команду «cat» для вывода команды «find»?
  • OS X: BSD `find / etc` печатает только` / etc`
  • Как найти конкретный файл и переместить его в конкретный каталог?
  • 2 Solutions collect form web for “find {} возвращает полное имя файла, но я просто хочу имя файла без расширения, поэтому index.md вернет индекс вместо index.md”

    Вы можете использовать -exec для создания новой оболочки bash, а затем манипулировать {} внутри оболочки, передав ее как параметр (к ней можно получить доступ как $0 в новой оболочке). Вы можете удалить конец файла .md с расширением параметра:

     find . -name '*.md' -type f -exec bash -c 'pandoc --filter ./filter1.py -o ${0%md}html' {} \; 

    Это будет работать.

    Например, рассмотрите файл .txt в текущем каталоге

     find . -type f -iname "*.txt" -exec basename \{\} .txt \; 
    Interesting Posts
    Linux и Unix - лучшая ОС в мире.