我有一个目录。我想选择没有.mp3
扩展名的所有文件(但没有目录)。这有效:
Dir.glob("#{dir}/**/*").reject { |f| File.directory?(f) }.reject { |f| File.extname(f) == '.mp3' }
但如果可能的话,我想一下子就这样做。我尝试了以下内容:
Dir.glob("#{dir}/**/*").reject { |f| File.file?(f) && File.extname(f) == '.mp3' }
但它不起作用。它确实忽略了非.mp3
文件,但它仍然包含目录。
答案 0 :(得分:2)
您要拒绝目录或具有mp4
扩展名的所有文件。就这样写:
Dir.glob("#{dir}/**/*")
.reject { |f| File.directory?(f) || File.extname(f) == '.mp3' }
或者您可能想要否定条件并使用select
代替。选择文件和没有mp3
扩展名的所有内容:
Dir.glob("#{dir}/**/*")
.select { |f| File.file?(f) && File.extname(f) != '.mp3' }