BASH脚本中的简单mv命令

时间:2014-01-07 03:38:16

标签: bash file mv

我的剧本的目标:

  1. 查看目录中的所有文件($ Home / Music / TEST)及其子目录(它们是音乐文件)
  2. 找出每个文件属于哪种音乐流派
  3. 如果类型为,则将文件移至另一个目录($ Home / Music / Output)
  4. 这就是我所拥有的:

    #!/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:无法将'3rd Eye Landslide.mp3'移动到'/ Music / Output / 3rd Eye Landslide.mp3':没有这样的文件或目录

    请不要认为我写了那个mminfo专栏 - 这只是从古老的谷歌搜索中复制过来的。它超越了我。

3 个答案:

答案 0 :(得分:4)

mv的第二个参数似乎是"~/Music/Output/$files"

如果~表示您的主目录,则应使用$HOME,例如:

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

~在引用时不会扩展为$HOME

答案 1 :(得分:0)

通过它看,当您将文件移动到目的地时会出现问题。请检查/ Music / Output /退出当前目录。或者使用绝对路径使其安全。另外,最好不要在文件名中使用空格。希望这会有所帮助。:)

答案 2 :(得分:-1)

在mv命令之前放置此命令应解决您的问题。

mkdir -p ~/Music/Output