使用shell脚本重命名文件夹中的文件
我已经下载了一个视频播放列表,并且想要使用名为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
请帮助我。谢谢!
rename -n `s/${line}.mp4/${e}.mp4/` *.mp4
应该
mv "${line}.mp4" "${e}.mp4"
第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':没有这样的文件或目录 –
这是因为你告诉它重命名不存在的文件。 – ikegami
这些文件位于文件夹中。我正尝试从名为Android播放列表的文件重命名这些文件。我正在阅读Android播放列表,找到该文件,然后重命名为1.mp4,然后移至下一行并将下一个文件重命名为2.mp4 ..这就是我正在尝试做的事情。脚本和文件包含在同一个文件夹中。 –
尝试使用双引号,而不是反引号这个:'重命名-n “S/$ {}行的.mp4/$ {E} .MP4 /” * .mp4' – tivn
为什么问题是perl标签? –
因为重命名使用Perl表达式和双引号不起作用! –