所以我有
find . -name \*.md -type f -exec pandoc --filter ./filter1.py -o {}.html {}
并注意{}.html
.返回{}
一个以 结尾的文件名.md
,但我希望它只返回不带 的文件名.md
,所以说我有一个名为 的文件index.md
,{}
应该返回index
,产生一个名为 的文件index.html
,而不是产生一个名为 的文件名index.md.html
。
那么我该如何删除.md
这个命令中的 呢?
答案1
它会起作用的。
例如,考虑.txt
当前目录中的文件
find . -type f -iname "*.txt" -exec basename \{\} .txt \;
答案2
您可以使用-exec
它创建一个新的 bash shell,然后{}
通过将其作为参数传递来在 shell 内部进行操作(可以像$0
在新 shell 中一样访问它)。您可以删除.md
以参数扩展结尾的文件类型:
find . -name '*.md' -type f -exec bash -c 'pandoc --filter ./filter1.py -o ${0%md}html' {} \;