Ruby on rails 在ruby中同时移动具有相同扩展名的所有文件

Ruby on rails 在ruby中同时移动具有相同扩展名的所有文件,ruby-on-rails,ruby,Ruby On Rails,Ruby,在终端中,我可以使用类似于: mv *.ext /some/output/dir/ 我想在ruby中也这么做。我可以在backticks(`)下使用system命令,也可以使用system(),但是如何用ruby方式实现同样的功能呢 我试过: FileUtils.mv '*.sql', '/some/output/dir/' 这不起作用,因为它专门查找文件名“*.sql”您需要使用Glob,如: Dir.glob('*.sql').each do|f| # ... your logic

在终端中,我可以使用类似于:

mv *.ext /some/output/dir/
我想在ruby中也这么做。我可以在backticks(`)下使用system命令,也可以使用system(),但是如何用ruby方式实现同样的功能呢

我试过:

FileUtils.mv '*.sql', '/some/output/dir/'

这不起作用,因为它专门查找文件名“*.sql”

您需要使用Glob,如:

Dir.glob('*.sql').each do|f|
  # ... your logic here
end
或者更简洁地说:

Dir.glob('*.sql').each {|f| FileUtils.mv(f, 'your/path/here')}
查看官方文档,其中甚至有Glob的示例

Update:如果你想确定你不迭代(虽然我不太担心它),你总是可以执行你认为在shell中优化的东西,直接从Ruby,例如:

`mv *.ext /some/output/dir/`
你可以做:

FileUtils.mv Dir.glob('*.sql'), '/some/output/dir/'
我将使用,因为它将文件内容
src
复制到
dest
。如果
dest
是一个目录,则将
src
复制到
dest/src
。如果
src
是文件列表,则dest必须是目录

FileUtils.cp Dir['*.sql'], '/some/output/dir/'
我不会使用,因为如果file和dest存在于不同的磁盘分区上,则复制该文件,然后删除原始文件


但是,如果您不想删除原始文件,请使用
::mv

谢谢您的帮助。我仍然不太看好遍历整个列表,一次移动一个。我的回答旨在向您介绍
glob
。我相信通过使用glob(即使你像BroiSatse建议的那样直接使用它),你无论如何都会进行迭代。非常感谢你把它介绍给我。:)是的,我确实需要将文件从一个位置移动到另一个位置,所以我将使用::mv本身。休息吧,这个命令很有效。谢谢