複数のファイルをコピーしますが、拡張子を同じに保つ方法は?

複数のファイルをコピーしますが、拡張子を同じに保つ方法は?

複数のファイルを繰り返しながら$file現在のファイルを表示しています。

現在のファイルをコピーしたり、名前を変更したり、拡張子を同じままにしたりするにはどうすればよいですか?

たとえば$file=x.jpg

$fileファイル名を使用してコピーを作成する方法x_orig.jpg

これまで私は以下を持っています:

for file in /tmp/p/DSC*.JPG; do
  cp $file $file+'_orig'.JPG
done

しかし、これはファイルをコピーします

DSCF1748.JPG

到着

DSCF1748.JPG+_orig.JPG

そして私は名前が欲しい

DSCF1748_orig.JPG

同様に、cp $file "$file"_orig.JPG

結果ファイルは次のとおりです。DSCF1748.JPG_orig.JPG

_origファイル名の中間部分を取得したい...

ベストアンサー1

バッシュが使えます文字列置換機能その理由は次のとおりです。

for file in /tmp/p/DSC*.JPG; do
  cp "$file" "${file%.JPG}"_orig.JPG
done

一般的な形式は最後から削除することです${string%substring}。たとえば、substringstring

$ f=foobar.JPG; echo "${f%.JPG}"
foobar

おすすめ記事