2017-12-06 7 views
1

아래 코드를 사용하여 폴더의 파일 이름을 추출한 다음 해당 파일에 작업을 수행하고 있습니다.폴더의 파일 목록을 미리 정해진 순서대로 가져옵니다.

camel-amqp-2.16.0.jar 
netty-all.jar 
proton-j.jar 
qpid-jms-client.jar 

난 후, 어플리케이션 설치 폴더에 의해 JAR 파일 하나를 복사해야

for library in lib/* 
do 
    echo ${library##*/} 
    cp -v ${library##*/} /opt/java/deploy/ 
done 
} 

상기는의 출력을 산출한다.

지금 당장 4 개의 jar 파일이 있지만 앞으로는 파일 수가 증가 할 것입니다.

위의 모든 작업이 정상적으로 작동합니다. 하지만 저의 딜레마는 qpid-jms-client.jar & camel-amqp-2.16.0.jar이 마지막으로로드되어야한다는 것입니다.

기본적으로 qpid & 낙타 jar 파일이 목록 맨 아래에 있으므로로드 할 마지막 파일이되도록 출력을 정렬해야합니다. 늘 많이 사용 될 순으로 정렬하기 때문에 여기에 도움이되지 않습니다 sort를 사용

.

내가 시도할만한 것이 있습니까?

+4

두를 복사하는 루프 내부에'if' 문을 넣어 루프 후 2 줄을 추가 결국 일치되어 있는지 확인하기 위해 마지막에 나열되어 있습니다 거기서 그들을 무시하십시오. –

+2

또는'find lib/-not -name aaa -and -not -name bbb'의 출력을 반복하고 나머지 두 파일을 수동으로 끝에 복사하십시오. – Pavel

답변

1

extglob 사용하여이 작업을 수행 할 수 있습니다

shopt -s extglob nullglob 

for lib in !(@(qpid-jms-client|camel-amqp-*)).jar qpid-jms-client.jar camel-amqp-*.jar; do 

    echo "${lib##*/}" 
    cp -v "${lib##*/}" /opt/java/deploy/ 

done 

를 작동하는 방법 :

  • extglob 패턴을 !(@(qpid-jms-client|camel-amqp-*)).jar 일치하는 모든 *.jar 파일을 qpid-jms-client.jar & camel-amqp-2.16.0.jar 파일을 제외하고.
  • 사람들이 개 파일은이 2 개 개의 jar 파일은 항상
관련 문제