find -execを使ってファイル拡張子を削除します。

find -execを使ってファイル拡張子を削除します。

を使用すると、2番目の中かっこペア(つまり)から元のファイル拡張子をどのように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

「インライン」シェルスクリプトを使用できます。パラメータ拡張:

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

または(findサポートするとより効率的です)

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

答え2

1つの方法は、基本スクリプトを介して結果を実行することです。

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

関連情報