Regex 脚本重命名文件名中包含08或09的文件失败

Regex 脚本重命名文件名中包含08或09的文件失败,regex,bash,octal,Regex,Bash,Octal,我一直在尝试使用以下脚本链接itunes中的所有电视节目,例如: /iTunes/iTunes媒体/电视节目/新秀蓝/第5季/01 Blink.m4v /iTunes/iTunes Media/TV Shows/Haven/Season 3/11 Last Goodbyes.m4v /iTunes/iTunes媒体/电视节目/医生(2005)/第5/10季文森特与医生。m4v 转到格式为./TVShows/Show.Name/Season.nn/Show.Name.SnnEnn.eposio

我一直在尝试使用以下脚本链接itunes中的所有电视节目,例如:

  • /iTunes/iTunes媒体/电视节目/新秀蓝/第5季/01 Blink.m4v
  • /iTunes/iTunes Media/TV Shows/Haven/Season 3/11 Last Goodbyes.m4v
  • /iTunes/iTunes媒体/电视节目/医生(2005)/第5/10季文森特与医生。m4v
转到格式为./TVShows/Show.Name/Season.nn/Show.Name.SnnEnn.eposion.Name.m4v的新目录 e、 g:

  • ./TVShows/Rookie.Blue/seasure.05/Rookie.Blue.S05E01.Blink.m4v
  • /TVShows/Haven/Season.03/Haven.S03E11.Last.Goodbyes.m4v
  • /TVShows/TV Shows/Doctor.Who.2005/Season.05/Doctor.Who.2005.S05E10.Vincent.and.the.Doctor.m4v
#/bin/bash
srcroot=“./iTunes/iTunes媒体/电视节目”
desroot=“./TVShows”
对于“$srcroot”/*/*/*.{m4v,mp4,avi}中的f
做
[[-f$f]| |继续
IFS=/read-a vid
失败于

bash: printf: 08: invalid octal number
bash: printf: 09: invalid octal number
这是因为以0开头的数字被解释为八进制数,而八进制数只能包含字符0-7。删除前导零。在bash中,可以使用

x=008
printf %02d $((10#$x))
它将数字解释为十进制


您还可以使用
$(printf%s“$x”| sed's/^00*/')

关闭缺少的双引号,检查突出显示。请添加一个shebang,然后将脚本粘贴到,并尝试实现那里提出的建议。请参阅:我尝试使用了“`printf-v hlname--'%s.s%02de%02d.%s'$show”“$((10#sn sn))”“$(10#ep))”“$eptitle”“$ext”``但是得到了错误:``TVlink.sh:line 22:10#sn:value对于base来说太大了(错误标记是“10#sn”)``@Cassie:对不起,我这边有错误。在
#
之后,您仍然需要
$
。谢谢,这样就解决了问题
bash: printf: 08: invalid octal number
bash: printf: 09: invalid octal number
x=008
printf %02d $((10#$x))