Get file name and extension in Ruby Ask Question

Get file name and extension in Ruby Ask Question

I'm working on a program to download a video from YouTube, convert it to MP3 and create a directory structure for the files.

My code is:

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

The first one goes to the already created music folder. Inside that I'm executing get. After that I have two files in the directory: "xyz.mp4" and "xyz.m4a".

I would like to fetch the filename without the extension so I can handle both files differently.

I'm using an array, but an array for just one match sounds crazy for me.

Has anyone another idea?

ベストアンサー1

You can use the following functions for your purpose:

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"

おすすめ記事