【问题标题】:Rename bunch of files in bash script重命名bash脚本中的一堆文件
【发布时间】:2016-05-12 08:50:41
【问题描述】:

我有一些名称包含日期的文件,但这个日期部分的格式错误,我需要更改它。示例文件:

foo-1-21-01-16.tar
foo-1-22-01-16.tar
foobar-1-21-01-16.tar
foobar-1-22-01-16.tar

我想要的结果应该是这样的:

foo-1-16-01-21.tar
foo-1-16-01-22.tar
foobar-1-16-01-21.tar
foobar-1-16-01-22.tar

所以,我想做的是将“日”部分的位置更改为“年”部分的位置。但我无法弄清楚如何做到这一点。文件比较多,所以不能手动操作。

【问题讨论】:

    标签: string bash file


    【解决方案1】:

    建议您使用 AWK。示例:

      echo "foo-1-21-01-16.tar" | awk -F'[-.]' '{printf "bar-%s-%s-%s-%s.%s", $2, $5, $4, $3, $6 }'
    

    将导致bar-1-16-01-21.tar。 -F 参数告诉 awk 分割- 或. 上的每一行输入。拆分后,$1 = foo、$5 = year 等使用print 以另一种顺序重新组合每个字段的文件名。

    从 bash 脚本,遍历您的文件,使用上述命令创建新文件名,然后使用 mv 重命名文件。如果您需要代码示例,请告诉我。

    【讨论】:

    • 遍历文件或使用 mv 都不是问题。我对 awk 了解不多,我只是想不通这部分关于在文件名中切换位置。我现在可以用你给我的东西工作了。谢谢! :)
    猜你喜欢
    • 2016-04-30
    • 2014-07-17
    • 2015-08-02
    • 2014-10-08
    • 2021-11-27
    • 2013-06-10
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    相关资源
    最近更新 更多