【发布时间】:2014-04-02 20:39:50
【问题描述】:
我对 bash 知之甚少,但我正在尝试制作一个简单的脚本,该脚本将根据专辑将 MP3 分类到子目录中,并根据曲目编号、专辑和艺术家重命名它们。我当前的代码似乎没有正确重命名和移动文件,但我不确定我做错了什么。这是我根据一位希望我尝试使用 bash 的朋友的提示制作的当前代码:
mkdir $2
FILES="$1"/*
for f in $FILES
do
echo "Processing $f..."
ARTIST="`id3tool "$f" | grep '^Artist:' | awk '{ for (i=2;i<=NF;i++) { printf $i; printf " " } }'`"
ALBUM="`id3tool "$f" | grep '^Album:' | awk '{ for (i=2;i<=NF;i++) { printf $i; printf " " } }'`"
YEAR="`id3tool "$f" | grep '^Year:' | awk '{ for (i=2;i<=NF;i++) { printf $i; printf " " } }'`"
TRACKNUM="`id3tool "$f" | grep '^Track:' | awk '{ print $2 }'`"
mkdir $2/$ALBUM/
mv $f "$TRACKNUM-$ALBUM-$ARTIST.mp3"
mv $f $2/$ALBUM/
done
第一个参数是我用来测试的 MP3 目录。第二个参数是我希望它们移动到的目录。当我运行它时,我将测试目录移动到目标目录中,并且没有任何文件被更改或放入子目录中。第一个 mv 不应该更改名称,然后第二个将它们移动到我想要的位置吗?循环是选择目录而不是文件吗?
编辑:当我运行它时,我收到错误:mv: unrecognized option '--.mp3' 即使这样,它似乎仍然移动了测试目录,而不是 mp3。
Edit2:好的,更多测试表明测试目录而不是其中的文件已被处理。我该如何解决?
Edit3:好的,我做了一些更改,并且制作了专辑目录,但是我得到了 mkdir 错误,它们在每个第一个之后每次都已经存在,我得到了
mkdir: 无法创建目录‘/home/user/ResultMP3s/Album0’: 文件存在
mkdir: 无法创建目录'/': 文件存在
mv: cannot stat ‘TestMP3s/song01.mp3’: No such file or directory
mv: 无法创建目录'/Album0': 权限被拒绝
【问题讨论】: