異なる拡張子を持つファイルの名前を変更する方法

異なる拡張子を持つファイルの名前を変更する方法

次のファイルがあるとしましょう。

essay.aux                   essay.out
essay.dvi                   essay.pdf
essay.fdb_latexmk           essay.tex
essay.fls                   essay.toc
essay.log                   ......

名前を次のように変更するにはどうすればよいですか?

new_name.aux                new_name.out
new_name.dvi                new_name.pdf
new_name.fdb_latexmk        new_name.tex
new_name.fls                new_name.toc
new_name.log                ......

問題は、名前が異なるのではなく拡張子が異なるため、使用できないことです。この問題。そして私はrename命令のないmacOSを使っています。

ベストアンサー1

これが私が使用できる解決策です:

#!/bin/bash
shopt -s nullglob

my_files='/root/temp/files'
old_name='essay'
new_name='new_name'

for file in "${my_files}/${old_name}"*; do
    my_extension="${file##*.}"
    mv "$file" "${my_files}/${new_name}.${my_extension}"
done
  • shopt -s nullglob

これにより、解析されたディレクトリが空の場合、エラーは発生しません。

  • for file in "${my_files}/${old_name}"*; do

次に終わる限り、各fileinを繰り返します。/root/temp/files/essay

  • my_extension="${file##*.}"

これは何でも貪欲に切り取る最後 .ファイル名に見つかりました(拡張子のみを残してください)

  • mv "$file" "${my_files}/${new_name}.${my_extension}"

拡張子を保持しながら、古いファイルを新しいファイル名に移動します。 (名前が変更されました)

おすすめ記事