【问题标题】:rename command is not overwriting as it should by default, how do I force overwrite?重命名命令默认情况下不会覆盖,我该如何强制覆盖?
【发布时间】:2019-11-20 16:52:42
【问题描述】:

我有一个使用重命名命令的 bash 脚本,如下所示:

sudo rename 's/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/Date-$1-$2-$3__Time-$4:$5:$6/' 2019*

根据重命名手册页,该命令应默认覆盖,而不是使用 -o 标志覆盖。但是当我运行脚本时,它不会覆盖现有文件。但是,我收到了一个错误,并且重复的文件没有得到脚本完成的任何其他处理。

重命名文件

20190710220231.WAV 未重命名:Date-2019-07-10__Time-22:02:31.WAV 已存在 20190710220300.WAV 未重命名:Date-2019-07-10__Time-22:03:00.WAV 已存在 20190710220338.WAV 未重命名:Date-2019-07-10__Time-22:03:38.WAV 已存在 20190710220349.WAV 未重命名:Date-2019-07-10__Time-22:03:49.WAV 已存在

沮丧,我试图只使用 mv 命令,但给了我一个不同的错误:

mv: target '20190710222433.WAV' 不是目录

所以我添加了 / 并得到了同样的错误。有什么建议吗?

【问题讨论】:

    标签: shell command-line-interface rename mv


    【解决方案1】:

    您可以使用选项-f 强制覆盖现有文件:

    rename -f ...
    

    人重命名:

    -f, --force
                   Over write: allow existing files to be over-written.
    

    【讨论】:

    • 谢谢 UtLox。我知道这个问题被否决了,因为如果我会进一步阅读等等等等......但是当他们是一个不被覆盖的标志时,那么常识会在布尔世界中表明默认程序将是相反的。真或假 - 不真真假。
    猜你喜欢
    • 2014-12-12
    • 2022-01-11
    • 1970-01-01
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    相关资源
    最近更新 更多