因为群辉里面收集的歌曲太多,一开始没有进行分类整理,后期整理实在麻烦,因此写了个脚本一键整理,按歌手对歌曲分类,特此记录。
好像使用此脚本后,drive需要重启
ps":群辉的文件一般都保存在/volume1里面
此次脚本针对的情形如下
- 目前的music目录,针对KTV和流行歌两个目录进行整理
- 脚本歌曲名格式需要是 歌手名 -*
- 本次脚本未对定时执行做优化,定时执行可优化脚本,修改temp_file的写入逻辑
链接到群辉ssh,创建shells文件夹,创建如下脚本
用到脚本如下
- su 获取管理员权限,需要输入管理员密码(成功后下面不需要输入sudo)
- 创建文件夹 sudo mkdir 、/opt/shells; sudo mkdir /opt/shells/txt;
- 创建shell脚本: sudo vi /opt/shells/music_manage.sh ,复制如下代码,按Esc后输入:wq回车
- 赋予权限: sudo chmod R 755 opt/shells
- 执行脚本 sudo sh /opt/shells/music_manage.sh
#!/bin/bash
music_base="/volume1/music"
music_sort_paths=("KTV" "流行歌")
for music_sort_path in "${music_sort_paths[@]}"; do
music_path="$music_base/$music_sort_path"
echo $music_path
folders=("")
temp_file="/shells/txt/$music_sort_path.txt" # 创建一个临时文件来存储目录名
# 使用 find 命令并将输出重定向到临时文件
find "$music_path" -maxdepth 1 -mindepth 1 -type d -print0 > "$temp_file"
echo $temp_file
# 读取临时文件中的目录名
while IFS= read -r -d $'\0' dir; do
folder_basename=$(basename "$dir")
if [[ "$folder_basename" != "." && "$folder_basename" != ".." ]]; then
folders+=("$folder_basename")
fi
done < "$temp_file"
# 打印数组中的每个文件夹名
for file in "$music_path"/*; do
if [[ $file != *"-"* ]]; then
continue;
fi
status1=0
prefix_name=${file%%-*}
person_name=${prefix_name##*/}
for folder in "${folders[@]}"; do
if [[ "$folder" == "$person_name" ]]; then
status1=1
mv "$file" "$music_path/$folder"
break;
fi
done
if [[ "$status1" == "0" ]]; then
new_folder="$music_path/$person_name"
mkdir "$new_folder"
mv "$file" "$new_folder"
fi
done
done