AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1339540
Accepted
Marty
Marty
Asked: 2021-05-21 04:43:12 +0800 CST2021-05-21 04:43:12 +0800 CST 2021-05-21 04:43:12 +0800 CST

为文件添加时间戳

  • 772

终端输出我正在使用 Lubuntu 20.04 LTS。我想为一些 wav 文件添加时间戳,以便将它们上传到网站。我希望第一个文件是 Garden2021-05-02_04-10-00.wav 和以下文件,每个文件增加 30 秒。请问我怎样才能最好地做到这一点?

timestamp
  • 2 2 个回答
  • 204 Views

2 个回答

  • Voted
  1. pLumo
    2021-05-21T05:07:10+08:002021-05-21T05:07:10+08:00

    首先将日期更改为可以轻松增加 30 秒的格式,例如 Unix 时间戳:

    timestamp=$(date -d 2021-05-02T04:10:00 +%s) # --> 1619921400
    

    然后你可以像这样增加时间戳:

    timestamp=$((timestamp+30))
    

    要获取您喜欢的文件名,请使用date:

    date -d @$timestamp "+Garden%F_%H-%M-%S.wav"
    

    现在循环您的文件并组合命令:

    timestamp=$(date -d 2021-05-02T04:10:00 +%s)
    for f in *.wav; do
        echo mv "$f" "$(date -d @$timestamp "+Garden%F_%H-%M-%S.wav")"
        timestamp=$((timestamp+30))
    done
    

    对输出感到满意后,删除echo.

    • 2
  2. Best Answer
    steeldriver
    2021-05-21T07:54:40+08:002021-05-21T07:54:40+08:00

    尽管它通常与 形式的替换一起使用s/pattern/replacement/,但基于 perl 的rename命令实际上可以接受任何有效的 perl 表达式。因此,例如(从pLumo 的答案中借用初始化)你可以这样做:

    rename -n -- '
      BEGIN{use Time::Piece; our $ts = Time::Piece->new(shift)}
      $_ = our $ts->strftime("Garden%F_%H-%M-%S.wav");
      $ts += 30
    ' "$(date -d 2021-05-02T04:10:00 +%s)" *.wav
    

    -n一旦您对建议的重命名感到满意,请删除。

    请注意,文件将按照*您所在地区的扩展顺序进行标记。如果您想要另一个顺序,那么恕我直言,最简单的方法是切换到 Z-shell ( zsh),您可以在其中使用glob 限定符来指定排序顺序。例如*.wav(n),或按名称递增对*.wav(.non)普通文件进行数字排序:

    % ls *.wav
    1.wav  10.wav  11.wav  12.wav  2.wav  3.wav  4.wav  5.wav  6.wav  7.wav  8.wav  9.wav
    
    % rename -n -- '
      BEGIN{use Time::Piece; our $ts = Time::Piece->new(shift)}
      $_ = our $ts->strftime("Garden%F_%H-%M-%S.wav");
      $ts += 30
    ' "$(date -d 2021-05-02T04:10:00 +%s)" *.wav(.non)
    rename(1.wav, Garden2021-05-02_04-10-00.wav)
    rename(2.wav, Garden2021-05-02_04-10-30.wav)
    rename(3.wav, Garden2021-05-02_04-11-00.wav)
    rename(4.wav, Garden2021-05-02_04-11-30.wav)
    rename(5.wav, Garden2021-05-02_04-12-00.wav)
    rename(6.wav, Garden2021-05-02_04-12-30.wav)
    rename(7.wav, Garden2021-05-02_04-13-00.wav)
    rename(8.wav, Garden2021-05-02_04-13-30.wav)
    rename(9.wav, Garden2021-05-02_04-14-00.wav)
    rename(10.wav, Garden2021-05-02_04-14-30.wav)
    rename(11.wav, Garden2021-05-02_04-15-00.wav)
    rename(12.wav, Garden2021-05-02_04-15-30.wav)
    

    如果您不能使用zsh,那么您可以在其他 shell 中使用外部sort与 一起执行相同的操作xargs:

    printf '%s\0' *.wav | sort -zn | xargs -0 rename -n -- '
      BEGIN{use Time::Piece; our $ts = Time::Piece->new(shift)}
      $_ = our $ts->strftime("Garden%F_%H-%M-%S.wav");
      $ts += 30
    ' "$(date -d 2021-05-02T04:10:00 +%s)"
    
    • 0

相关问题

  • 复制文件并保持与原始文件相同的时间戳

  • Linux 中的时间戳是什么?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve