2012-05-03 9 views
1

私の音楽をiTunesに取り込むには、その場所を見つけなければなりません。私のファイルを掘り下げて自分のiTunesフォルダを探し、それを自分のiTunesフォルダにコピー/ペーストする必要があります。どのようにして.mp3ファイルをiTunesフォルダに移動するRubyスクリプトを作成しますか?

私が欲しいのは、.mp3で終わるファイルのためのフォルダをスキャンし、それらのファイルを自分のiTunesフォルダに移動するRubyスクリプトです。

私はファイル名を知っていればiTunesにファイルを移動する方法を知っていますが、.mp3ファイルのみをiTunesフォルダにどのように見つけることができますか?私はちょうど.mp3で終わるファイルを選択するために私が使用できるものにいくつかの方向が必要です。

+0

http://stackoverflow.com/questions/1849699/is-it-possible-to-recursively-require-all-files-in-a-directory-in-ruby –

+0

「Dir [ **/*。mp3 '] 'check [docs](http://ruby-doc.org/core-1.9.3/Dir.html#method-c-glob)を参照してください。 –

答えて

2
require 'find' 
require 'fileutils' 
Find.find('/') do |f| 
    FileUtils.mv(f, "ABSOLUTE PATH TO ITUNESFOLDER") if f.match(/\.mp3\Z/) 
end 

それはそれの開始点のディレクトリツリー全体をスキャンしますので、これはおそらく、この場合は、「/」(ファイルシステム全体を)しばらく時間がかかります。 「/」の代わりにホームディレクトリから起動する

+1

これは良い答えです。 – earlonrails

+0

ありがとう!これは今動作します。 – chanman82

2

この再帰的方法を使用して、多くのディレクトリ内のファイルを見つけてitunesフォルダに移動することができます。

def ls_R(dirname) 
    Dir.foreach(dirname) do |dir| 
     dirpath = dirname + '/' + dir 
     if File.directory?(dirpath) 
     if dir != '.' && dir != '..' 
      ls_R(dirpath) 
     end 
     else 
     FileUtils.mv(dirpath, "PATH_TO_ITUNESFOLDER") if dirpath.match(/\.mp3\Z/) 
     end 
    end 
    end 
+1

Find.findの実装は再帰的であり、Find.find( '/ path1'、 '/ path2'、 '/ path3 /、/' weeeeeeee ')という複数の引数もサポートしています。 –

0

上記の提供の両方のソリューションへの発言: あなたがこのタイプのアクションのため をターゲットとすべき「iTunesに自動的に追加」フォルダがあります。

....../iTunes/iTunes Media/Automatically Add to iTunes/

これは、iTunesで曲を得るためのより良い方法が可能になります。

関連する問題