拡張子を維持しながら多くのファイルにサフィックスを追加する

拡張子を維持しながら多くのファイルにサフィックスを追加する

~/mydir/多くのファイルを含むディレクトリがあります。これらのファイルの一部は

~/mydir/foo.py
~/mydir/foo.tex
~/mydir/foo.pdf
~/mydir/foo.log

~/mydir/デフォルト名のファイルfoofoo-bar

~/mydir/foo-bar.py
~/mydir/foo-bar.tex
~/mydir/foo-bar.pdf
~/mydir/foo-bar.log

新しいファイル名が既存のファイルと競合することを心配しません($ ls ~/mydir/foo-bar*何も返されません)。

Bashではこれを行うのは簡単ですが、わかりません。

これを行う簡単なスクリプトはありますか?

答え1

ディストリビューションがperlバージョンの名前変更を使用(または提供)する場合(Debianおよびほとんどの派生バージョンがこれを実行します):

cd mydir
rename 's/\.([^.]+)$/-bar.$1/

私はいくつかのディストリビューション(どんなディストリビューションも覚えていません)をprename

答え2

これは次の方法で行うことができますmv

for name in ./foo*; do mv "$name" "${name/foo/foo-bar}"; done

たとえば、

[devuser@machine test]$ touch foo.log foo.pdf foo.tex foo.py
[devuser@machine test]$ ls
foo.log  foo.pdf  foo.py  foo.tex
[devuser@machine test]$ for name in ./foo*; do mv "$name" "${name/foo/foo-bar}"; done
[devuser@machine test]$ ls
foo-bar.log  foo-bar.pdf  foo-bar.py  foo-bar.tex

関連情報