LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 740|回复: 2

搜索指定目录下的所有音乐文件,并创建播放列表

[复制链接]
发表于 2010-12-28 02:17:55 | 显示全部楼层 |阅读模式
由于硬盘上收的歌曲比较多,有十几个G,平时一个个文件夹翻来翻去的,麻烦,就花时间写了下面这个脚本,各位有需要的可以拿去耍耍&_&
  1. #!/bin/sh
  2. # 本脚本将搜索当前目录下的音频文件,并生成Playlist以供VLC及Totem等软件来读取。
  3. # 支持搜索以下格式的音频,如果需要,可以加入其他格式:mp3|ogg|wma|ape|wav|flac;
  4. # version 1.01.
  5. # E-mail:xushaohua2011@gmail.com
  6. printf "请指定一个目录(需要绝对路径),直接回车的话就使用当前目录:\n";
  7. read search_path;
  8. if [ -z "$search_path" ]
  9. then
  10.         search_path=`pwd`;
  11. fi
  12. tmp_file=Playlist-`date +%F`.pls;
  13. touch $tmp_file ;
  14. # 开始搜索,忽略扩展名的大小写;
  15. find $search_path -iname \*.mp3 -print > $tmp_file;
  16. find $search_path -iname \*.wma -print >>$tmp_file;
  17. find $search_path -iname \*.flac -print >>$tmp_file;
  18. find $search_path -iname \*.wav -print >>$tmp_file;
  19. find $search_path -iname \*.ogg -print >>$tmp_file;
  20. find $search_path -iname \*.ape -print >>$tmp_file;
  21. # 统计行数;
  22. max_line=`sed -n "$=" $tmp_file`;
  23. # 修改
  24. sed -i = $tmp_file;
  25. sed -i 'N;s/\n/=/' $tmp_file;
  26. sed -i 's/^/File/' $tmp_file;
  27. sed -i "1i\NumberOfEntries=$max_line" $tmp_file;
  28. sed -i '1i\[Playlist]' $tmp_file;
  29. exit 0;
复制代码
发表于 2010-12-28 10:10:52 | 显示全部楼层
很好用,谢谢,但是不是 m3u 格式更通用一些?还有,能不能一次性按不同子目录生成播放列表?因为我的音乐文件夹里面有好几十个目录。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-12-28 12:53:39 | 显示全部楼层
Post by chenzhen;2124356
很好用,谢谢,但是不是 m3u 格式更通用一些?还有,能不能一次性按不同子目录生成播放列表?因为我的音乐文件夹里面有好几十个目录。


修改了一下,可以同时支持pls及m3u两种格式,关于子目录的问题,现在来不及改了,我一会儿还要去实验室,有时间了会帮你想想的。
  1. #!/bin/sh

  2. # 本脚本将搜索当前目录下的音频文件,并生成Playlist以供VLC及Totem等软件来读取,支持pls及m3u格式;
  3. # 支持搜索以下格式的音频,如果需要,可以加入其他格式:mp3|ogg|wma|ape|wav|flac;
  4. # version 1.02.
  5. # E-mail:xushaohua2011@gmail.com

  6. printf "请选择要保存的格式:\n 1) m3u\n 2) pls\n";
  7. read format;
  8. if [ $format = 1 ]
  9. then
  10.         tmp_file=Playlist-`date +%F`.m3u;
  11. elif [ $format = 2 ]
  12. then
  13.         tmp_file=Playlist-`date +%F`.pls;
  14. else
  15.         printf "格式选择错误,强制使用pls格式\n";
  16.         format=2;
  17.         tmp_file=Playlist-`date +%F`.pls;
  18. fi

  19. printf "请指定一个目录(需要绝对路径),直接回车的话就使用当前目录:\n";
  20. read search_path;
  21. if [ -z "$search_path" ]
  22. then
  23.         search_path=`pwd`;
  24. fi

  25. touch $tmp_file ;

  26. # 开始搜索,忽略扩展名的大小写;
  27. find $search_path -iname \*.mp3 -print > $tmp_file;
  28. find $search_path -iname \*.wma -print >>$tmp_file;
  29. find $search_path -iname \*.flac -print >>$tmp_file;
  30. find $search_path -iname \*.wav -print >>$tmp_file;
  31. find $search_path -iname \*.ogg -print >>$tmp_file;
  32. find $search_path -iname \*.ape -print >>$tmp_file;

  33. # 修改
  34. if [ $format = 1 ]
  35. then
  36.         sed -i '1i\#EXTM3U' $tmp_file;
  37. else
  38.         max_line=`sed -n "$=" $tmp_file`;
  39.         sed -i = $tmp_file;
  40.         sed -i 'N;s/\n/=/' $tmp_file;
  41.         sed -i 's/^/File/' $tmp_file;
  42.         sed -i "1i\NumberOfEntries=$max_line" $tmp_file;
  43.         sed -i '1i\[Playlist]' $tmp_file;
  44. fi

  45. exit 0;
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表