2016-07-06 3 views
1

이전 버전의 버전이 루트에 저장되어있는 정적 웹 사이트가 있습니다. 이 페이지를 찾아서 루트 파일의 일부 링크에서 사용되는지 확인하고 싶습니다.
그래서 나는 파워 쉘의 명령 ls -R -Name을 사용하여 파일 'Filelist.txt의'에 저장할 루트 내부의 모든 파일의 목록을 만들어 지금은 같은 있습니다파일이 html 페이지의 링크로 사용되는 위치를 어떻게 찾을 수 있습니까?

directory1 
directory2 
5s.htm 
5s.html 
5s_introduction.htm 
... 
images\icons 
images\icons\linkedin.png 
images\icons\project-slider-arrow-left.png 
images\icons\project-slider-arrow-right.png 

내가 지금 어디에이를보고 싶지을 파일이 사용 되었기 때문에 파이썬에서 간단한 스크립트를 사용할 수 있다고 생각했다. (필자는 윈도우의 파워 쉘을 모른다.) 목록에서 한 줄을 가져 와서 루트 내부의 각 HTML 페이지에서 occurences를 찾는다.
내가 다음 ++ 메모장에이 정규식 시도 파일 이름 만 추출하려면 :

[^\\^\n]+\.[a-z]{0,4} 

을하고 일을 보였다을 ...
두 번째 단계 (^ \ n이 모든 디렉토리를 대표하는 라인을 제외하는 것입니다), I 시도

import re 
with open('filelist.txt') as f: 
    for l in f: 
     m = re.match('([^\\^\n]+\.[a-z]{0,4})', l) 
     if m: 
      print(m.group(1)) 

을하지만, 정규식이 잘못된 경우처럼 그것은 나에게 완전히 잘못 문자열, 공백이나 단일 문자의 전체를 반환 내가 유래에 발견이 파이썬 라인을 적용합니다. 그런 다음 변수로 정규 표현식 결과를 사용하고 루트 디렉토리의 각 HTML 페이지에서 어떻게 든 검사 할 수 있다고 생각했지만 여기에 붙어 있습니다.

답변

0

당신은 파일 이름이 '.'를 포함해야하기 때문에, 각 경로가 '\'에 분할 할 수 있습니다 그것은 '.' 포함 된 경우 확인. 또한 각 줄을 제거하면 줄 바꿈 문자가 제거됩니다.

with open('filelist.txt') as f: 
    for l in f: 
     l= l.strip() 
     if '.' in l.split('\\')[-1]: 
      print l.split('\\')[-1] 

출력 :

5s.htm 
5s.html 
5s_introduction.htm 
linkedin.png 
project-slider-arrow-left.png 
project-slider-arrow-right.png 
0

이 하나를 시도

([\d+\w+\.\\\-])+ 
+0

그것은 작동하지 않습니다 ... 그것은 나에게 파일 확장자의 마지막 문자를 인쇄 –

관련 문제