web-dev-qa-db-ja.com

Rubyでファイル名と拡張子を取得します

YouTubeからビデオをダウンロードし、MP3に変換し、ファイルのディレクトリ構造を作成するプログラムに取り組んでいます。

私のコードは:

FileUtils.cd("#{$musicdir}/#{$folder}") do
  YoutubeDlhelperLibs::Downloader.get($url)
  if File.exists?('*.mp4')
    puts 'Remove unneeded tempfile'
    Dir['*.mp4'].each do |waste|
      File.delete(waste)
    end
  else
    puts 'Temporary file already deleted'
  end

  Dir['*.m4a'].each do |rip|
    rip.to_s
    rip.split
    puts 'Inside the function'
    puts rip
  end

end

最初のものは、作成済みの音楽フォルダに移動します。その中で私はgetを実行しています。その後、ディレクトリに「xyz.mp4」と「xyz.m4a」の2つのファイルがあります。

拡張子なしでファイル名を取得したいので、両方のファイルを別々に処理できます。

私は配列を使用していますが、たった1つのマッチの配列は私にとってはクレイジーに聞こえます。

誰か別のアイデアがありますか?

101
Sascha Manns

次の機能を目的に使用できます。

path = "/path/to/xyz.mp4"

File.basename(path)         # => "xyz.mp4"
File.extname(path)          # => ".mp4"
File.basename(path, ".mp4") # => "xyz"
File.basename(path, ".*")   # => "xyz"
File.dirname(path)          # => "/path/to"
250
Stoic