【问题标题】:Remove hyphens from filename with Bash使用 Bash 从文件名中删除连字符
【发布时间】:2012-04-26 20:56:38
【问题描述】:

我正在尝试创建一个小型 Bash 脚本来删除文件名中的连字符。比如我要重命名:

CropDamageVO-041412.mpg

CropDamageVO041412.mpg

我是 Bash 新手,所以要温柔 :] 谢谢你的帮助

【问题讨论】:

    标签: bash shell rename


    【解决方案1】:
    FN=CropDamageVO-041412.mpg
    mv $FN `echo $FN | sed -e 's/-//g'`
    

    反引号 (``) 告诉 bash 在其中运行命令并在表达式中使用该命令的输出。 sed 部分应用正则表达式从文件名中删除连字符。

    或者对当前目录中匹配特定模式的所有文件执行此操作:

    for i in *VO-*.mpg
    do
        mv $i `echo $i | sed -e 's/-//g'`
    done
    

    【讨论】:

    • 这确实具有一般 Posix-shell 兼容性的优势。我不确定我是否应该喝下所有的 bash kool-aid。
    • 确实,我就是这样养成了避免花哨的 bash-isms 的习惯,以至于即使现在我很少使用古董贝壳,我也不会真正使用它们。 Solaris 和 AIX 有很多问题要解决...
    • 哇,回复得真快。我应该指定我试图删除许多文件中的连字符,格式为:[NAME]VO-[DATE].mpg
    • 说早做晚。如果您想了解有关 bash 的更多信息,tldp.org/LDP/abs/html 是一个很好的指南,虽然比较枯燥。
    • 太完美了!我非常感谢!你让我的工作轻松多了
    【解决方案2】:
    f=CropDamageVO-041412.mpg
    echo "${f//-}"
    

    或者,当然,

    mv "$f" "${f//-}"
    

    【讨论】:

      【解决方案3】:

      试试这个:

      for file in $(find dirWithDashedFiles -type f -iname '*-*'); do
        mv $file ${file//-/}
      done
      

      这是假设您的目录名称中没有破折号。那会打破这个。

      ${varname//regex/replacementText} 语法解释为here。只需搜索子字符串替换。

      此外,如果您的目录或文件名中有空格,这会中断。如果你的文件名中有空格,你应该使用这个:

      for file in *-*; do
        mv $file "${file//-/}"
      done
      

      这样做的缺点是必须在包含您要更改的文件的每个目录中运行,但是,就像我说的,它更健壮一些。

      【讨论】:

      • 如果文件名中可能有空格,则需要双引号 $file (即mv "$file" "${file//-/}")
      • @GordonDavisson 不错。更新了我的答案。
      • 不要解析 find 的输出,当然也不要使用 for 循环:因为原样,您的语句会在文件名中出现空格或全局字符。如果您想坚持使用find,请使用更强大的方法,例如find dirWithDashedFiles -type f -name '*-*' -exec bash -c 'mv "$f" "${f//-}"' - {} \;(请注意,当替换字符串为空时,尾部斜杠是可选的)。
      【解决方案4】:

      从任何字符串中删除连字符的通用解决方案:

      $ echo "remove-all-hyphens" | tr -d '-'
      removeallhyphens
      $
      

      【讨论】:

        猜你喜欢
        • 2012-04-27
        • 1970-01-01
        • 1970-01-01
        • 2015-09-24
        • 2020-05-24
        • 2022-12-01
        • 2017-04-01
        • 2018-11-20
        • 2013-10-08
        相关资源
        最近更新 更多