2014-04-13 5 views
0

ftp에서 파일을 검색 할 수있는 bash 스크립트가 있습니다.bash 스크립트의 와일드 카드

이제 파일에는 파일 이름에 날짜 문자열이 하나 있지만 모든 파일에서 변경되는 정의되지 않은 숫자가 있습니다. 날짜를 기준으로 파일을 다운로드하고 싶습니다.

이것은 내 코드입니다. 와일드 카드 트릭 만하면되고 ftp 스크립트는 이미 작동합니다.

filename=$(echo $TIMESTAMP'0***vel.radar.h5') 

별표는 추정 할 수없는 다른 숫자로 된 3 자리 숫자이므로 와일드 카드를 사용합니다.

감사합니다

+0

문제는 무엇입니까? '*'는 임의의 갯수의 문자를 의미하므로 '***'는'*'와 동일합니다. 한 문자의 와일드 카드는'?'입니다. – choroba

+0

get $ filename을 사용하여 ftp 서버에서 파일을 다운로드해야합니다. – user3408380

답변

1

여러 파일을 처리하는 것 소리지만, 스크립트가 한 번에 하나 개의 파일을 처리 할 수 ​​있습니다. 또한 FTP를 지정 했으므로 파일이 FTP 서버에있는 것처럼 들리므로 로컬 파일 이름 확장이 도움이되지 않습니다.

리모컨의 패턴과 일치하는 여러 파일을 다운로드하려면 ftp 클라이언트의 mget 명령을 사용하는 것이 좋습니다. 또한 패턴의 일부로 $TIMESTAMP을 포함하고자합니다. 이것은 (한 줄에 단독으로 EOF<<EOF)는 여기-문서를 사용

ftp remote-hostname <<EOF 
cd path/to/log/files 
prompt 
mget ${TIMESTAMP}0???vel.radar.h5 
bye 
EOF 

는 FTP의 커멘드를 입력 텍스트를 공급 :이 같은 것을 건의 할 것입니다. 변수 $TIMESTAMP이 확장되어 mget 명령의 일부가됩니다 (예 : $ TIMESTAMP가 12345이면 ftp 명령에 mget 123450???vel.radar.h5이 표시됩니다.

0

? 문자에는 숫자뿐만 아니라 문자도 포함됩니다. 따라서 숫자 만 포함 시키려면 ??? [0-9] [0-9] [0-9]의 문자.

예 :

다음과 같은 파일이있는 경우이와

$ ls 0123vel.h5 0333vel.h5 033vel.h5 0pecvel.h5

올바른 파일을 보여 LS :

$ ls 0[0-9][0-9][0-9]vel.radar.h5 0123vel.h5 0333vel.h5

관련 문제