【问题标题】:incrementing numbers script with a filename situation [duplicate]带有文件名情况的递增数字脚本[重复]
【发布时间】:2021-06-24 03:48:01
【问题描述】:

解释:

这是我正在进行的一项研究的一部分。我不允许更改 mp3 文件的文件名,我必须以某种方式从脚本中执行此操作,并使其尽可能短。脚本本身是一个菜单,用户可以选择一个章节,然后选择章节的一部分,从那里他们可以听我的语言文本,他们的语言音译,然后是他们的语言/字母的句子。

我必须通过创建一个在 bash 中制作菜单的脚本来简化问题。一切都很好,我已经自动化了很多。所以这部分已经完成,我不需要为下面的问题回答问题,因为这基本上可以正常工作。

而且它必须是 bash 脚本,而不是 python 或其他任何东西。

另外,英语不是我的母语,所以请与我同在!


情况:

所以我遇到了一种情况,我需要在菜单脚本中添加播放音频文件的功能。我不知道如何比举例说明更好。

除了一件事之外,基本上一切都很好。

我有一系列 mp3 文件,范围从 001001.mp3 到 114006.mp3

他们使用他们的命名约定将前三个数字作为章节,后三个作为章节的一部分。对我来说这很奇怪,因为我会创建一个不同的结构而现在不能,因为这些文件已经被使用了。

现在我可以通过输入生成这些数字来自动获取前三个的数字(读取 -p ":" 章节号)。但是第二个进入脚本更乏味,因为我从 1 数到最多需要 300,但没有前导零、0 或 00。而且我不能简单地使用 read -p 来实现这一点,因为它会自动基于我给它的数字的输入。

文件名示例:

001001.mp3 # chapter 001 part 001
001015.mp3 # chapter 001 part 015
067012.mp3 # chapter 067 part 012
277103.mp3 # chapter 277 part 103

下面是我用来打印 bash 菜单选择的脚本

我要求立即忘记数字的前三位,这已经被覆盖了!!

i=1
while [ $i -le 300 ]
    do
        echo "  printf \"$i) : Chapter $chapter Part $i\n\""
        ((i++))
    done

所以这基本上会导致

1) Chapter 001 part 1
2) Chapter 001 part 2
3) Chapter 001 part 3
4) Chapter 001 part 4
5) Chapter 001 part 5
6) Chapter 001 part 6
7) Chapters part 7
...
43) Chapters part 43
44) Chapters part 44
45) Chapters part 45
...
100) Chapters part 100
201) Chapters part 201
etc

考虑到文件名的限制,我不确定如何编辑该脚本 sn-p 以便我可以将 001、002 等作为该名称的最后三位数字,因此强制它使用三位数字一两位前导零:

001
002
003
...
014
015
...
057
...
103
284
etc

我希望任何人都可以帮助我并理解我的愿望,也许可以帮助我更好地提出这个问题。 :)

【问题讨论】:

  • @Storin 对,如果这是你想要的,那么我会删除我的答案,因为它已经是重复的了..
  • @socowi 我从我的问题开始就说明了那部分。没必要对它粗鲁。

标签: bash script


【解决方案1】:

如果前导零是你想要的,也许这个。

#!/usr/bin/env bash

i=1
while ((i <= 300)); do
  printf -v "leading_zero" %03d "$i"
  printf '%s) Chapter %s Part %s\n' "$i" "$chapter" "$leading_zero"
  ((i++))
done

或者至少你是这样理解你想要什么的。

【讨论】:

  • 谢谢,这对我有帮助!
猜你喜欢
  • 2021-12-04
  • 2021-07-16
  • 2013-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-04
  • 2019-03-10
相关资源
最近更新 更多