带有文件名情况的递增数字脚本
incrementing numbers script with a filename situation
解释:
这是我正在进行的一项研究的一部分。我不允许更改 mp3 文件的文件名,我必须以某种方式从脚本中执行此操作并使其尽可能短。脚本本身是一个菜单,用户 select 有一章,然后是该章的一部分,从那里他们可以用我的语言收听文本,然后用他们的语言收听 运行sliteration 和然后他们language/alphabet.
中的句子
我必须通过创建一个在 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 菜单的脚本 selection
我马上问忘记号码的前三位数字部分,这已经涵盖了!!
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
鉴于文件名的限制,我不确定如何编辑该脚本片段,以便我可以获得 001、002 等作为该名称的最后三位数字,因此强制它使用三位数字乘一或两位前导零:
001
002
003
...
014
015
...
057
...
103
284
etc
我希望任何人都可以在这方面帮助我并理解我的愿望,也许可以帮助我更好地提出这个问题。 :)
如果前导零是您想要的,也许是这样。
#!/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
或者至少这就是你想要的理解方式。
解释:
这是我正在进行的一项研究的一部分。我不允许更改 mp3 文件的文件名,我必须以某种方式从脚本中执行此操作并使其尽可能短。脚本本身是一个菜单,用户 select 有一章,然后是该章的一部分,从那里他们可以用我的语言收听文本,然后用他们的语言收听 运行sliteration 和然后他们language/alphabet.
中的句子我必须通过创建一个在 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 菜单的脚本 selection
我马上问忘记号码的前三位数字部分,这已经涵盖了!!
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
鉴于文件名的限制,我不确定如何编辑该脚本片段,以便我可以获得 001、002 等作为该名称的最后三位数字,因此强制它使用三位数字乘一或两位前导零:
001
002
003
...
014
015
...
057
...
103
284
etc
我希望任何人都可以在这方面帮助我并理解我的愿望,也许可以帮助我更好地提出这个问题。 :)
如果前导零是您想要的,也许是这样。
#!/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
或者至少这就是你想要的理解方式。