find
を使用する場合、.pdf
中括弧(-exec
)の2番目のペアから元のファイル名拡張子(つまり、{}
)を削除するにはどうすればよいですか?
例えば:
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
「インライン」シェルスクリプトを使用できます。 パラメータ拡張 :
-exec sh -c 'pdf2svg "$1" "${1%.pdf}.svg"' sh {} \;
または(より効率的に、find
がサポートしている場合)
-exec sh -c 'for f; do pdf2svg "$f" "${f%.pdf}.svg"; done' sh {} +