2016-08-03 3 views
3

내 Rails 앱에서 Dir.glob을 사용하여 서로 다른 두 개의 디렉토리에있는 모든 파일의 경로를 수집하려고합니다.여러 패턴을 Dir.glob와 비교하는 방법은 무엇입니까?

다음 코드는 작동하지만 간결하지 않습니다. 일치하는 방법이 없습니까 Dir.glob와 함께 한 번에 두 패턴?

+0

당신이 원하는 모든 파일에서 app/assets/mystuff/* 및 하위 디렉토리? – zee

답변

5

Dir.glob도 패턴 배열을 허용합니다.

Dir.glob(["app/assets/mystuff/*", "app/assets/mystuff/more/*"]) 
+0

당신은 절대적으로 옳습니다. 감사. – Tintin81

1

내 로컬 컴퓨터에서 테스트했는데 예상대로 작동합니다.

z$ find deletpractic/ 
deletpractic/ 
deletpractic/sub_dir 
deletpractic/sub_dir/file1_in_subdir.txt 
deletpractic/sub_dir/file2_in_subdir.txt 
deletpractic/text1 
deletpractic/text2 
deletpractic/text3 
deletpractic/text4 
deletpractic/text5 
deletpractic/text6 
deletpractic/text7 

는 거의이 Dir.glob("/mydir/**/*")

[za]$ /usr/bin/ruby -rpp -e 'common_file_paths = Dir.glob("/dev/deletpractic/**/*").reject do |path| File.directory?(path) end ; pp common_file_paths' 

출력 귀결 :

당신이이 다음 디렉토리 및 하위 디렉토리가, 말할 수

["/dev/deletpractic/sub_dir/file1_in_subdir.txt", 
"/dev/deletpractic/sub_dir/file2_in_subdir.txt", 
"/dev/deletpractic/text1", 
"/dev/deletpractic/text2", 
"/dev/deletpractic/text3", 
"/dev/deletpractic/text4", 
"/dev/deletpractic/text5", 
"/dev/deletpractic/text6", 
"/dev/deletpractic/text7"] 
관련 문제