【问题标题】:Rename file containing substring 'foo' with 'bar'用 'bar' 重命名包含子字符串 'foo' 的文件
【发布时间】: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


    【解决方案1】:

    如果您有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 但不确定它是否有效
    • 你能否在不使用重命名命令的情况下提出其他替代方案
    • @usercr:您提供的单行应该可以工作。试试for f in *foo*; do echo mv "${i}" "${i//foo/bar}"; done 看看它会做什么。删除echo 以真正做到这一点。
    猜你喜欢
    • 2016-02-22
    • 1970-01-01
    • 2011-12-27
    • 2022-07-19
    • 2022-10-23
    • 1970-01-01
    • 2013-12-18
    • 1970-01-01
    • 2018-09-03
    相关资源
    最近更新 更多