Bash 루프에서 파일 제외

Bash 루프에서 파일 제외

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


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

답변1

다음과 같은 문을 추가할 수 있습니다 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 {}" \;

답변2

extglob이 기능이 아직 활성화되지 않은 경우( ) 활성화해야 합니다 shopt -s extglob.

for dir in !(dirname)/
...

관련 정보