내 목표는 특정 파일 이름 패턴을 제외하고 특정 텍스트 패턴을 파일 계층 구조로 검색하고 일치하는 파일 만을 로컬 디렉토리는 confs
입니다. 다음 스크립트는 작업을 수행합니다저장 방법 - bash 스크립트의 환경 변수에 grep의 인수 제외
#!/bin/bash
export FEXCLUDE="{*edit,*debug,*orig,*BAK,*bak,*fcs,*NOPE,*tomcat,*full.xml,*-ha.xml}";
export SRCDIR=/opt/jboss-as-7.1.1.Final/standalone;
confshow() {
for ii in `grep -rlZ \
--exclude={*edit,*debug,*orig,*BAK,*bak,*fcs,*NOPE,*tomcat,*full.xml,*-ha.xml} \
--exclude-dir={log,tmp,i2b2.war,*.log,*_history,*.old} "<datasource\|username\|password\|user-name" \
$SRCDIR/* | xargs -0 ls {}` ;
do cp --parents $ii confs;
done;
}
그러나, 제외 패턴이 자주 업데이트를 필요로 할 가능성이 높다 및 기타 기능들과 공유해야 할 수 있습니다를, 그래서의 시작 부분에 선언 된 변수에 그들 모두를 선호 스크립트.
#!/bin/bash
export FEXCLUDE="{*edit,*debug,*orig,*BAK,*bak,*fcs,*NOPE,*tomcat,*full.xml,*-ha.xml}";
export SRCDIR=/opt/jboss-as-7.1.1.Final/standalone;
confshow() {
for ii in `grep -rlZ \
--exclude=$FEXCLUDE \
--exclude-dir={log,tmp,i2b2.war,*.log,*_history,*.old} "<datasource\|username\|password\|user-name" \
$SRCDIR/* | xargs -0 ls {}` ;
do cp --parents $ii confs;
done;
}
어떤 생각이 어떻게 원하는 동작을 얻을 : 나는 다음과 같은 작업을 수행 할 때 제외 할 파일은 confs
디렉토리에 복사하세요? 또는 $FEXCLUDE
인수 (echo
이 잘못 표시되지 않음)가 전달되면 grep
이 보는 것을 보는 방법은 무엇입니까?
감사합니다.
이상한. 표현식에 따옴표가 필요 없기 때문에 따옴표로 FEXCLUDE 변수를 정의하는 이유가 궁금합니다. 없이 일해야한다. 한 번해볼 만하다. –