아래와 같이 다른 폴더에 conf.yml 파일이 있습니다.
/var/loyalty-badge/conf/conf.yml
/var/loyalty-level/conf/conf.yml
/var/promotion/conf/conf.yml
/var/featured/conf/conf.yml
이제 나는 그들 모두가 conf.yml
conf와 같은 폴더를 복사하기를 원합니다.
대상 파일은 다음과 같아야합니다
conf/loyalty-badge_conf.yml
conf/loyalty-level_conf.yml
conf/promotion_conf.yml
conf/featured_conf.yml
스크립트를 제안해 주실 수 있나요?
답변1
당신은 간단하게 사용할 수 있습니다와일드카드 패턴파일을 열거합니다 …/conf/conf.yml
. 사용하다for 루프파일을 반복합니다.
for x in /var/*/conf/conf.yml; do …
바로 다음 부분을 추출해야 합니다 /var
. 당신은 이것을 할 수 있습니다쉘 확장기능: 접두사와 접미사를 제거합니다. 두 단계로 수행합니다. /var
접두사를 제거한 다음 /conf/conf.yml
접미사를 제거합니다.
y=${x#/var}; y=${y%%/*}
이제 서로 붙입니다.
for x in /var/*/conf/conf.yml; do …
y=${x#/var}; y=${y%%/*}
cp -p "$x" "conf/${y}_conf.yml"
done
" 텍스트 뒤에 오는 값" ${y}_conf.yml
으로 구문 분석되므로 중괄호가 필요합니다 .$y_conf.yml
y_conf
.yml