根据第一行重命名目录中的每个文件

用户名

从Ruby开始,尝试创建一个简单的重命名Ruby脚本。假设我有一个目录,其中包含简历,其中包含随机文件名,例如:Resume0001,Resume0012,Resume9123,Res_430。通常,起始名称是什么都没有关系。

我希望脚本吸收每个文件,然后以文件名作为简历所有者的名称来重命名(或创建一个新文件)。我了解这当然取决于简历的布局,但是,我假设第一行仅包含该人的姓名。

根据我所知道的,我能够通过手动输入参数(文件)来重命名它们。如果我只想做5张履历表,那会很好。当我尝试向脚本提供约10,000个简历的目录时,出现了我的问题。

这是我到目前为止的内容:

puts "Renaming files..."

Dir.glob("Resumes") do |f|
    File.rename(f, f.readline())
end

puts "Renaming complete."

我有几个主意,为什么这不起作用/我不确定的事情:

  1. f只是一个字符串,而不是一个文件对象,这就是为什么readline()不能在其上工作的原因。(编辑:f ==文件名,而不是对实际文件对象的引用)

  2. 我也收到一个私有方法错误。如果我尝试类似的事情,也会发生这种情况

    first_line = f.readline() File.rename(f, first_line)

    我只是很难理解什么是私有方法错误。

  3. 我不完全确定指定目录路径的工作方式。假设我的.rb文件位于documents\name\resume_converter\converter.rb如果我的简历目录也位于resume_converter文件夹(resume_converter\Resumes)中,则应在Dir.glob("Resumes")?中指定它如果这是另一个更深的文件怎么办?resume_converter\Dummy_folder\Resumes=>Dir.glob("Dummy_folder\Resumes")吗?

  4. 我正在尝试做的事情有框架支持吗?我没有实际的Rails /框架知识,但是我想象在使用框架之前已经完成了类似的任务?

是的,我被困住了。

尤金

这样的事情应该起作用:

require 'fileutils'

Dir.glob("Resumes/*").each do |f|
  name = File.open(f).readlines.first.strip # Strip off any whitespace or trailing newlines
  FileUtils.mv(f, "Resumes/#{name}")
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据指令文件重命名目录中的文件

使用python重命名目录中的所有文件以在每个文件中存在的行

VB.net重命名目录中的每个文件

一次重命名目录中的多个文件

批量重命名目录中的文件

Powershell 重命名目录中的文件

Python,重命名目录中的文件

根据另一个目录中文件的名称重命名目录中的文件

根据目录中包含的文本重命名目录中的所有文件

根据文本文件中包含的文本重命名目录中的文件

如何根据文本文件的第一行重命名txt文件?

使用R根据文件名重命名目录中的文件

Python或Unix / bash。重命名目录中每个文件的第11列

如何使用当前目录重命名目录中的文件

根据Bash中的模式重命名目录

Bash - 如何根据 names.txt 重命名目录中的文件

如何在Mac上根据创建时间重命名目录中的文件列表

Powershell重命名目录中的所有文件,重命名值来自被重命名的文件

如何重命名目录名称,将名称字符串中每个单词的第一个字母替换为大写?

跳过用于重命名文件的CSV文件中的第一行(或更多行)

如何重命名目录中的多个文件

如何重命名目录中的多个文件?

使用python或R重命名目录中的文件

使用Python重命名目录中的多个文件

使用增量索引重命名目录中的文件

重命名目录中特定类型的所有文件

Python重命名目录中的多个文件

Bash脚本重命名目录中的文件

R-以正确的顺序重命名目录中的文件