我正在做一些事情,需要解决以下问题。我给的是我的问题的类似版本。
假设我们有一个音乐目录,其中有200个目录对应于不同的电影。每个电影目录中都有一些音乐文件。
现在,假设文件music.mp3在文件夹movie.mp3中。我想制作一个shell脚本,以便它将文件重命名为movie_music.mp3并将其放在我提到的某个文件夹中。基本上,子目录中的所有文件都将被重命名并将其放置在新目录中。
任何解决方法?
最佳答案
该脚本接收两个参数:源文件夹和目标文件夹。它将源目录下任何目录下的每个文件移动到具有新文件名的新目录下:
#!/bin.sh
echo "Moving from $1 to $2"
for dir in "$1"/*; do
if [ -d "$dir" ]; then
for file in "$dir"/*; do
if [ -f "$file" ]; then
echo "${file} -> $2/`basename "$dir"`_`basename "${file}"`"
mv "${file}" "$2"/`basename "$dir"`_`basename "${file}"`
fi
done
fi
done
这是一个示例:
bash move.sh dir dir2
从dir移到dir2
dir/d1/f1-> dir2/d1_f1
dir/d1/f2-> dir2/d1_f2
dir/d2/f1-> dir2/d2_f1
dir/d2/f2-> dir2/d2_f2