【问题标题】:How can I add date to a filename using sed如何使用 sed 将日期添加到文件名
【发布时间】:2014-08-29 02:27:49
【问题描述】:

我需要一个sed 行,它将stroodle-EMAIL-MSG.mail 重命名为stro{dd_mm_yyyy}.zip

sed 能做到这一点吗?

【问题讨论】:

  • 您想要重命名文件上的今天日期吗?
  • s/odle-EMAIL-MSG\.mail/\{dd_mm_yyyy\}.zip/
  • 你试过了吗?
  • 我尝试使用 cut -c1-4 所以我将前 4 个字符 ${DATE} 添加到末尾,但这是不对的。
  • 为什么要使用 sed 重命名文件,同时用 bash 标记问题? bash 还不足以重命名吗?

标签: unix sed rename


【解决方案1】:

正如您在帖子的 cmets 中所说的那样,您最好不要使用 sed 来执行此任务。

请考虑使用 UNIX date 命令。假设您想要当前日期,并使用 bash 语法:

mv "stroodle-EMAIL-MSG.mail" \
   "stroodle{$(date +%d_%m_%Y)}.zip"

文件将重命名为stroodle{09_07_2014}.zip

如果您想改用其他日期,例如去年圣诞节:

mv "stroodle-EMAIL-MSG.mail" \
   "stroodle{$(date +%d_%m_%Y -d 'December 25 2013')}.zip"

这次您的文件将重命名为stroodle{25_12_2013}.zip
(有关-d 选项的date 可用字符串格式的详细信息,请参阅man date,或者更好的是info date

现在,如果您真的必须使用 sed(也许您想在文本文件中更改此名称?),您可以使用类似:

sed "s/stroodle-EMAIL-MSG.mail/stro{$(date +%d_%m_%Y)}.zip/" input_file

备注:为了更好地按日期对文件进行排序,您可以考虑使用带有date +%F 而不是date +%d_%m_%Y 的ISO 8601 格式。我喜欢ISO 8601

【讨论】:

    猜你喜欢
    • 2015-02-25
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    • 2013-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多