用 'bar' 重命名包含子字符串 'foo' 的文件

Chi*_*ani 5 regex unix linux shell command-line

我想重命名包含子字符串 ' foo' 的所有文件,并bar在给定文件夹中将其替换为 ' '。我怎样才能做到这一点?

更新:

for i in ./*foo*; do mv "$i" "${i//foo/bar}";done 
Run Code Online (Sandbox Code Playgroud)

作品!!!

cha*_*ite 3

如果您有rename(1)附带的perl(Debian 提供的),您可以使用:

cd /path/to/directory
rename 's/foo/bar/g' *
Run Code Online (Sandbox Code Playgroud)

如果你有其他的rename(1)(我在 Red Hat Enterprise Linux 和其他一些发行版中见过它,它来自 util-linux),你可以尝试:

cd /path/to/directory
rename foo bar *foo*
Run Code Online (Sandbox Code Playgroud)

rename您可以通过尝试检查您拥有的版本rename -V。如果它不能识别该标志,则它是 perl 版本。如果打印版本信息,则为其他版本。

  • @usercr:您提供的一句话应该有效。尝试`for f in *foo*; 做 echo mv "${i}" "${i//foo/bar}"; 完成`看看它会做什么。删除“echo”以真正做到这一点。 (3认同)