2014-01-07 54 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