bash 루프에서 파일 제외 작업을 수행하고 싶습니다. 그래서 추가하고

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


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



답변

다음 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 {}" \;


답변

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

for dir in !(dirname)/
...


답변