Command-Line

使用 find -exec 刪除文件副檔名

  • August 24, 2021

使用時find,如何.pdf從第二對-exec大括號 ( ) 中刪除原始文件副檔名 (ie {})?


例如:

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**

您可以使用“內聯”shell 腳本和參數擴展

-exec sh -c 'pdf2svg "$1" "${1%.pdf}.svg"' sh {} \;

或(更有效,如果你find支持它)

-exec sh -c 'for f; do pdf2svg "$f" "${f%.pdf}.svg"; done' sh {} +

一種方法是通過基本腳本執行結果 -

for i in $( find ~/Documents -regex 'LOGIC.*\.pdf' )  
do  
   o=$( echo $i | sed -e s/.pdf$// )  
   pdf2svg $i ${o}.svg  
done 

引用自:https://unix.stackexchange.com/questions/452634