find {}は完全なファイル名を返しますが、拡張子なしでファイル名のみを望むので、index.mdはindex.mdの代わりにindexを返します。

find {}は完全なファイル名を返しますが、拡張子なしでファイル名のみを望むので、index.mdはindex.mdの代わりにindexを返します。

だから私は持っています

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

そして{}.html。で{}終わるファイル名を返します.mdが、存在しないファイル名のみを返したいので、返す必要があるファイルがあると仮定する.mdと、file nameという名前のファイルを生成するのではなくという名前のファイルを生成します。index.md{}indexindex.htmlindex.md.html

.mdでは、このコマンドからどのように削除しますか?

答え1

動作します。

たとえば、.txt現在のディレクトリのファイルを考えてみましょう。

find . -type f -iname "*.txt" -exec basename \{\} .txt \;

答え2

これを使用-execして新しいbashシェルを作成し、{}それを引数として渡してシェルの内部で動作させることができます($0新しいシェルと同じようにアクセスできます)。.mdパラメータ拡張子で終わるファイル形式を削除できます。

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

関連情報