使用 时find
,如何.pdf
从第二对大括号-exec
( {}
) 中删除原始文件扩展名 (即 )?
例如:
find ~/Documents -regex 'LOGIC.*\.pdf' -exec pdf2svg {} {}.svg \;
输入文件名:
~/Documents/LOGIC-P_OR_Q.pdf
输出文件名:
~/Documents/LOGIC-P_OR_Q.pdf.svg
所需的文件名:
~/Documents/LOGIC-P_OR_Q.svg
答案1
您可以使用“内联”shell 脚本,并且参数扩展:
-exec sh -c 'pdf2svg "$1" "${1%.pdf}.svg"' sh {} \;
或者(如果你find
支持的话,效率会更高)
-exec sh -c 'for f; do pdf2svg "$f" "${f%.pdf}.svg"; done' sh {} +
答案2
一种方法是通过基本脚本运行结果 -
for i in $( find ~/Documents -regex 'LOGIC.*\.pdf' )
do
o=$( echo $i | sed -e s/.pdf$// )
pdf2svg $i ${o}.svg
done