ds audio按歌手对歌曲归档

原创
2024/11/06 17:43
阅读数 36

群辉里面上传了很多歌,但是后来发现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

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部