~/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