2011-04-14 2 views
0

다음 코드를 사용하여 파일을 PHP에서 HTML로 변환하고 있습니다. 이 파일이 작동하려면 두 번째 줄에 각 파일의 이름을 입력해야합니다.Ruby의 현재 디렉토리 또는 지정된 하위 폴더에서 지정된 유형의 파일을 자동으로 찾는 방법은 무엇입니까?

p "convert files" 
%w(file1 file2 file3).each do |name| 
    system %(php #{DIR}/#{name}.php > #{DIR2}/#{name}.htm) 
end 

사람이 어떻게 자동으로 메인 디렉토리에있는 .PHP 파일을 찾아 정의 된 폴더 추가 .PHP에 대한 자신의 하위 폴더에 모양과 유사한 폴더 이름에 저장됩니다 있도록 만드는 말해 줄 수 ?

file1.php -> file1.htm 
about-us/file2.php -> about-us/file2.htm 
contact-us/department/file3.php -> contact-us/department/file3.htm 

답변

1

가장 쉬운 방법은 Dir 사용하는 것입니다 :

Dir.chdir('where_the_php_files_area') 
Dir['**/*.php'].each do |php| 
    htm = 'where_the_html_files_should_go/' + php.sub(/\.php$/, '.htm') 
    system("php #{php} > #{htm}") 
end 

Dir.glob (AKA Dir[])의 ** 패턴이 디렉토리에 일치하는 재귀 그래서 Dir[**/*.php] 당신에게 모든 PHP 파일을 줄 것이다 예를 들어

현재 디렉토리 아래에.

+0

감사합니다. 그래서 "includes"(그리고 아마도 다른 것들)와 같은 디렉토리를 제외시키고 싶다면 어떻게 할 수 있습니까? – Cofey

+0

@Cofey : 가장 쉬운 방법은 블록 안에 if (i_like_this_path (File.dirname (php)) 체크를 추가하는 것입니다. ['File.dirname'] (http://www.ruby-doc.org/ core/classes/File.html # M000027)은 파일 이름의 디렉토리 부분을 줄 것이고'i_like_this_path()'에 대해 의미있는 것을 제공해야합니다. –

+0

@Andrew Grimm : 내 들여 쓰기 만 남겨주세요. 두 공간의 표준은 완전히 읽을 수 없으며 Ruby 커뮤니티만큼 많은 태도를 가지고 있습니다 :) –