2015-05-04 297 views
1

我已经下载了一个视频播放列表,并且想要使用名为android播放列表的文件来组织它们。例如:第一个标题为“Android.mp4简介”的文件,我必须将它重命名为1.mp4。我不知道Perl或UNIX,但我设法到目前为止编写代码:使用shell脚本重命名文件夹中的文件

`IFS='' 
c=0 
d=0 
e=1 
while read line 
do 
    d=`expr $c % 4` 
    if [ $d == 0 ] 
    then 
    echo $line 
    rename -n `s/${line}.mp4/${e}.mp4/` *.mp4 
    e=`expr $e + 1` 
    fi 
    c=`expr $c + 1` 
done < Android\ playlist` 

但这给错误:

Bareword found where operator expected at (eval 1) line 1, near "3rd" 
    (Missing operator before rd?) 
syntax error at (eval 1) line 1, near "3rd Party " 
LocationEntry Solution - Developing Android Apps 
ren.sh: line 11: s/LocationEntry Solution - Developing Android Apps.mp4$/243.mp4/: No such file or directory 
Bareword found where operator expected at (eval 1) line 1, near "3rd" 
    (Missing operator before rd?) 
syntax error at (eval 1) line 1, near "3rd Party " 
SQLiteOpenHelper onUpgrade() method - Developing Android Apps 
ren.sh: line 11: s/SQLiteOpenHelper onUpgrade() method - Developing Android Apps.mp4$/244.mp4/: No such file or directory 
Bareword found where operator expected at (eval 1) line 1, near "3rd" 
    (Missing operator before rd?) 
syntax error at (eval 1) line 1, near "3rd Party " 
JUnit testing - Developing Android Apps 
ren.sh: line 11: s/JUnit testing - Developing Android Apps.mp4$/245.mp4/: No such file or directory 
Bareword found where operator expected at (eval 1) line 1, near "3rd" 
    (Missing operator before rd?) 
syntax error at (eval 1) line 1, near "3rd Party " 
InsertReadDbTest - Developing Android Apps 
ren.sh: line 11: s/InsertReadDbTest - Developing Android Apps.mp4$/246.mp4/: No such file or directory 
Bareword found where operator expected at (eval 1) line 1, near "3rd" 
    (Missing operator before rd?) 
syntax error at (eval 1) line 1, near "3rd Party " 
InsertReadDbTest Solution - Developing Android Apps 
ren.sh: line 11: s/InsertReadDbTest Solution - Developing Android Apps.mp4$/247.mp4/: No such file or directory 
Bareword found where operator expected at (eval 1) line 1, near "3rd" 
    (Missing operator before rd?) 
syntax error at (eval 1) line 1, near "3rd Party " 
Simplify Tests - Developing Android Apps 
ren.sh: line 11: s/Simplify Tests - Developing Android Apps.mp4$/248.mp4/: No such file or directory 

请帮助我。谢谢!

+0

尝试使用双引号,而不是反引号这个:'重命名-n “S/$ {}行的.mp4/$ {E} .MP4 /” * .mp4' – tivn

+0

为什么问题是perl标签? –

+0

因为重命名使用Perl表达式和双引号不起作用! –

回答

2
rename -n `s/${line}.mp4/${e}.mp4/` *.mp4 

应该

mv "${line}.mp4" "${e}.mp4" 
+0

第6课回顾 - 开发Android应用程序 mv:can not stat'第6课回顾 - 开发Android应用程序 - 开发Android应用程序.mp4':没有这样的文件或目录 Storytime:Android的未来 - 开发Android应用程序 mv:can not stat'Storytime:Android的未来 - 开发Android应用程序.mp4':没有这样的文件或目录 恭喜! Android Party! - 开发Android应用程序 mv:无法统计'恭喜! Android Party! - 开发Android Apps.mp4':没有这样的文件或目录 –

+0

这是因为你告诉它重命名不存在的文件。 – ikegami

+0

这些文件位于文件夹中。我正尝试从名为Android播放列表的文件重命名这些文件。我正在阅读Android播放列表,找到该文件,然后重命名为1.mp4,然后移至下一行并将下一个文件重命名为2.mp4 ..这就是我正在尝试做的事情。脚本和文件包含在同一个文件夹中。 –