2014-09-15 4 views
1

내 perl 스크립트에 여러 파일 을 주간까지 입력하려고합니다. 그것은 단순히 배쉬에서 얻을 수있는 모든 파일 취특정 YYYYMMDD 날짜 덮어 쓰기

다음과
foreach my $input (@ARGV){ 
    ... 
} 

의 이름 지정 규칙이 보이는 : 그것은 아무 문제 없습니다 월의 첫 주에 대한

FILE_XYZ_20140908_0000.000XYZ 

을 ..

FILE_XYZ_2014090[1-7]_* 

.. 잘 일치합니다. 하루가 09에서 10으로 바뀌면 까다로워집니다.
에서 201409 까지 일치하는 패턴이 있습니까?

답변

3

나는 배쉬의 이전 버전에 대한 모르겠지만, 내 (4.1.11 (2))

echo 9{08..14} 

반환 이전 버전에서

908 909 910 911 912 913 914 

에, 당신은을 사용해야합니다 (3.00.15 (1)에서 테스트)보다 복잡한 표현 :

echo 9{0{8..9},1{0..4}} 
+0

두 번째 것은 나를 위해 일했습니다. (3.00.16 (1)) 정말 고마워! – hcrudolph

0

당신은

와 패턴 지원을 확장 사용하는 경우
shopt -s extglob 

다음과 같은 패턴을 지정할 수 있습니다 :

[email protected](01|02|03|04|05|06|07)_* 
[email protected](08|09|10|11|12|13|14)_* 
[email protected](15|16|17|18|19|20|21)_* 
F[email protected](22|23|24|25|26|27|28)_* 

패턴이 정말 당신이 명시 적으로 쓰는해야하는 이유 인 범위와 잘 작동하지 않습니다.

+0

chep, 가독성을 위해 이것을 확대하고 있습니까? 왜 단지'0 [1-7] _ *','@ (0 [8-9] | 1 [0-4]) _ *'등을 사용하지 않을까요? – ghoti

+0

네, 가독성. 예를 들어, 8-14 범위의 접힌 패턴은 7 자보다 짧으며 상당히 명확하지 않습니다. – chepner

관련 문제