2013-12-09 2 views
1

따라서 시나리오는 다음과 같습니다.파일 목록에서 파일 이름을 얻는 방법

디렉토리에서 jar 파일을 선택하는 자동화 된 스크립트를 작성해야합니다./서버-SDK-01.00.00-000080.000055.e0eb521.jar

서버 SDK의 일부 XXX/YYY 모든 일정 :하지만 jar 파일은 예를 들어 정기적으로

에 새로운 jar 파일로 대체됩니다 시간은 변경되지만 나머지 버전 번호는 변경됩니다.

이 시나리오에서 파일 이름을 읽고이를 변수에 저장할 수 있습니까?

나는
fspec=XXX/YYY/server-sdk-*.jar 

filename="${fspec##*/}" # get filename 
dirname="${fspec%/*}" # get directory/path name 

을 시도하지만, 여기에 난 단지 서버 SDK를 얻을 -. * 항아리 나는 그것이 서버-SDK-01.00.00-000080.000055.e0eb521.jar 것으로 예상 파일 이름으로.

+2

어느 쉘? 어느 OS? –

+0

unix 및 centOS – nakeer

+0

작동하지 않는 것은 무엇이며 오류는 무엇입니까? – anubhava

답변

1

Double command substitunion 셸 확장시 여기에서 구하십시오. *이 디렉토리에있는 jar 파일 - 하나 이상의 서버 SDK가있는 경우

fspec=$(echo XXX/YYY/server-sdk-*.jar) 

:.이 스크립트

짧은 대답은 파일 이름 확장을 강제로 echo을 사용하는 것입니다
> set +f 
> fspec=XXX/YYY/server-sdk-*.jar 
> f=$(echo $(echo "$fspec")) 
> echo "$f" 
XXX/YYY/server-sdk-01.00.00-000080.000055.e0eb521.jar 

> filename="${f##*/}" 
> echo "$filename" 
server-sdk-01.00.00-000080.000055.e0eb521.jar 
> dirname="${f%/*}" 
> echo "$dirname" 
XXX/YYY 
0

을 고려 당신은 이것을 할 수있어 가장 새로운 것만을 선택합니다 :

fspec=$(ls -t XXX/YYY/server-sdk-*.jar | head -1) 
관련 문제