群辉里面上传了很多歌,但是后来发现ds audio 分组很乱。于是想对每个歌手都创建一个文件夹。但是奈何工作量实在太大,几百首歌,于是写了如下脚本,亲测,有需求修改一下即可使用(用了之后,好像drive会出故障,要重新启动,可能是重新索引吧)
注意事项
1. 本次脚本针对的目录结构如下,不一致需要改动music_sort_paths数组和第一个for循环
2.此次脚本歌曲名格式需要是 歌手名-*
使用方式: 链接群辉ssh,创建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