使用 find -exec 删除文件扩展名

使用 find -exec 删除文件扩展名

使用 时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 

相关内容