为许多文件添加后缀,同时保留扩展名

为许多文件添加后缀,同时保留扩展名

~/mydir/我有一个包含许多文件的目录。其中一些文件是

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

我想将~/mydir/基本名称为 的foo任何文件更改为foo-bar.因此,上面的文件应该重命名为

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

我不担心新文件名与现有文件冲突($ ls ~/mydir/foo-bar*不返回任何内容)。

看起来这在 bash 中应该很容易做到,但我不明白。

有没有一个简单的脚本来完成这个任务?

答案1

如果您的发行版使用(或提供)perl 版本的 rename(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

相关内容