我正在做某事,需要解决以下问题。我给出了我的问题的类似版本。
假设我们有一个music目录,其中有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 Moving from dir to 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
关于linux - 用于重命名和重新定位文件的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3853113/