2015-05-04 296 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 ..這就是我正在嘗試做的事情。腳本和文件包含在同一個文件夾中。 –