【发布时间】:2013-02-06 14:23:33
【问题描述】:
我想重命名所有包含子字符串“foo”的文件,将其替换为给定文件夹中的“bar”。我该如何完成?
更新:
for i in ./*foo*; do mv "$i" "${i//foo/bar}";done
有效!!!
【问题讨论】:
标签: regex linux shell unix command-line
我想重命名所有包含子字符串“foo”的文件,将其替换为给定文件夹中的“bar”。我该如何完成?
更新:
for i in ./*foo*; do mv "$i" "${i//foo/bar}";done
有效!!!
【问题讨论】:
标签: regex linux shell unix command-line
如果您有perl 附带的rename(1)(Debian 提供),您可以使用:
cd /path/to/directory
rename 's/foo/bar/g' *
如果你有其他的rename(1)(我在 Red Hat Enterprise Linux 和其他一些发行版中看到过,它来自 util-linux),你可以试试:
cd /path/to/directory
rename foo bar *foo*
您可以通过尝试rename -V 来检查您拥有的rename 版本。如果它不识别标志,则它是 perl 版本。如果打印版本信息,就是其他版本。
【讨论】:
for i in ./*foo*; do mv "$i" "${i//foo/bar}";done 但不确定它是否有效
for f in *foo*; do echo mv "${i}" "${i//foo/bar}"; done 看看它会做什么。删除echo 以真正做到这一点。