2020/04/05(日)mplayer用のPlayListを生成する
2020/11/03 11:32
「ディレクトリを再帰的にたどりファイル一覧を取得したい その1 - Perl - とあるエンジニアの闇歴史帳」(http://tech.katsubemakito.net/perl/dir_recursion1) を参考にさせていただきました。
音楽ファイルは文字コード順で並び替えられるのが前提(例: 00_zzz.mp3 , 01_yyy.mp4 , ...)です。
ソースはこちら。
#!/usr/bin/perl use strict; #-- 再帰実行 --# reflexiveFile('.'); exit; sub reflexiveFile{ my $dir = shift; my @list = (); #-- カレントの一覧を取得 --# opendir(DIR, $dir) or die("Can not open directory:$dir ($!)"); @list = readdir(DIR); closedir(DIR); my $count_file = 0; my @music_files = (); foreach my $file (sort @list){ next if $file =~ /^\.{1,2}$/; if( -d "$dir/$file" ){ #ディレクトリ reflexiveFile("$dir/$file"); }else{ #ファイル $count_file++; #音楽ファイル push(@music_files, $file) if $file =~ /\.(mp3|wma)$/i; } } #print "$dir : $count_file @music_files\n"; #音楽ファイルのみがあるディレクトリならば if(@music_files > 0 && @music_files == $count_file){ my $c_dir = ( split(m|/|, $dir) )[-1]; print "$dir $c_dir.playlist.txt\n"; open(PL, ">$dir/$c_dir.playlist.txt"); print PL join("\n", @music_files). "\n"; close(PL); } }