2014-01-07 145 views
0

我的腳本的目的,一個簡單的mv命令:在bash腳本

  1. 看看在一個目錄($ HOME /音樂/ TEST)及其子目錄中的所有文件(它們是音樂文件)
  2. 找出什麼音樂流派每個文件屬於
  3. 如果體裁是,然後將文件移動到另一個目錄($ HOME /音樂/輸出)

這是我有:

#!/bin/bash 
cd Music/TEST 
for files in * 
do 
    if [ -f "$files" ];then 
    # use mminfo to get the track info 
    genre=`mminfo "$files"|grep genre|awk -F: '{print $2}'|sed 's/^ *//g'|sed 's/[^a-zA-Z0-9\ \-\_]//g'` 
    if [ $genre = Heavy ] ;then 
     mv "$files" "~/Music/Output/$files" 
    fi 
    fi 
done 

請告訴我如何寫mv命令。我嘗試過的所有東西都失敗了。我得到的錯誤是這樣的:

MV:不能移動「第三眼Landslide.mp3」到「/音樂/輸出/第三眼Landslide.mp3」:沒有這樣的文件或目錄

請不要我想我寫了那個mminfo行 - 這只是從舊的谷歌搜索複製。這遠遠超過了我。

+0

'/ Music/Output /'目錄是否存在? – pandubear

+0

Google此次失敗;那'mminfo'片斷是非常複雜的。修復僅使用一個Awk腳本不應該很難。 – tripleee

回答

-1

在mv命令應該解決您的問題之前,請將此命令。

mkdir -p ~/Music/Output 
0

通過它,當你將文件移動到其destination.Please檢查/音樂/輸出/從當前directory.Alternatively退出使用絕對路徑,使其安全問題出現時的樣子。此外,它是一個好主意在文件name.Hope這將不僅有助於利用空間。:)

4

如果~是爲了表示你的home目錄你的第二個參數mv似乎是"~/Music/Output/$files"

,你應該使用$HOME代替,如:

mv "$files" "$HOME/Music/Output/$files" 

~報價時,不會擴大到$HOME

+0

+0答案很好,但錯誤消息中沒有出現'〜',有點奇怪,因爲'mv'應該已經收到它作爲第二個參數的一部分。我認爲這與確保存在'〜/ Music/Output'是完全正確的答案。 – chepner