63

これが私の.rbファイルです:

puts "Renaming files..."

folder_path = "/home/papuccino1/Desktop/Test"
Dir.glob(folder_path + "/*").sort.each do |f|
    filename = File.basename(f, File.extname(f))
    File.rename(f, filename.capitalize + File.extname(f))
end

puts "Renaming complete."

ファイルは、初期ディレクトリから.rbファイルが配置されている場所に移動されます。ファイルを移動せずに、その場で名前を変更したいのですが。

何をすべきかについての提案はありますか?

4

5 に答える 5

102

簡単にどうですか:

File.rename(f, folder_path + "/" + filename.capitalize + File.extname(f))
于 2011-04-03T15:29:32.173 に答える
27

folder_path はファイル名の一部である必要はありませんか?

puts "Renaming files..."

folder_path = "/home/papuccino1/Desktop/Test/"
Dir.glob(folder_path + "*").sort.each do |f|
  filename = File.basename(f, File.extname(f))
  File.rename(f, folder_path + filename.capitalize + File.extname(f))
end

puts "Renaming complete."

編集:マットは私と同じ答えを出しているようですが、わずかに異なる方法です.

于 2011-04-03T15:30:57.040 に答える
20

変更したいファイルと同じ場所で実行している場合

File.rename("test.txt", "hope.txt")

正直なところ、ルビーを使用する意味がまったくわからないことがあります...ファイル名がシェルで単純に解釈される限り、おそらく必要はありません。

`mv test.txt hope.txt`
于 2012-10-12T01:51:55.870 に答える
1

Linuxファイルシステムを使用している場合は、試すことができますmv #{filename} newname

File.rename(old、new)を使用することもできます

于 2011-04-03T15:28:15.490 に答える