列出一个目录及其所有子目录中的文件。

28

在 Ruby 中,是否有列出目录中所有文件和子目录中所有文件的类?

1个回答

64

你可以看看Dir.glob。你可以传递 **/* 路径,它将返回文件夹及其子文件夹中的所有内容:

records = Dir.glob("path/to/your/root/directory/**/*")
# Will return everything - files and folders - from the root level of your root directory and all it's subfolders
# => ["file1.txt", "file2.txt", "dir1", "dir1/file1.txt", ...]

由于您可能想要一个不包括文件夹的文件列表,因此可以使用以下代码:

records = Dir.glob("path/to/your/root/directory/**/*").reject { |f| File.directory?(f) }

如果我想列出特定目录中的所有内容而不是当前目录,我该怎么做? - amir amir
4
Dir.glob("/path/to/my/directory/**/*") - Dylan Markow
1
它返回文件扩展名吗? - rony36
6
给未来的谷歌搜索者,仅获取文件的方法是:Dir.glob("**/*").reject {|f| File.directory?(f)}。 - Steven Jeffries

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接