bash 루프에서 파일 제외


10

다음 스크립트에서 루프에서 디렉토리를 어떻게 제외합니까? 모든 파일이 동일한 레벨에 존재하는이 디렉토리를 가리키는 심볼릭 링크 이므로이 작업을 수행하고 싶습니다. 그래서 추가하고 싶지 않습니다.


cd /var/www
for dir in */
do
        base=$(basename "$dir")
        tar -czfh "${base}.tar.gz" "$dir"
done

답변:


13

다음 continue과 같은 문장을 추가 할 수 있습니다 .

cd /var/www
for dir in */
do
        if [ "$dir" == "foo" ] ; then
              continue;
        fi
        base=$(basename "$dir")
        tar -czfh "${base}.tar.gz" "$dir"
done

또는 당신은 find명령으로 그것을 할 수 있습니다 :

find /var/www -maxdepth 1 -type d \( -name foo \) -prune -o -print -exec bash -c "tar -czfh \`basename {}\`.tar.gz {}" \;

7

extglob아직 활성화하지 않은 경우 활성화해야합니다 ( shopt -s extglob) :

for dir in !(dirname)/
...
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.