Bir dosyayı bash döngüsünde hariç tutma


10

Aşağıdaki komut dosyasında, bir dizini döngüde nasıl hariç tutabilirim? Bunu yapmak istiyorum çünkü tüm dosyalar aynı düzeyde var olan bu dizine işaret eden semboller, bu yüzden eklemek istemiyorum.


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

Yanıtlar:


13

Bunun continuegibi bir ifade ekleyebilirsiniz :

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

Veya findkomutla yapabilirsiniz:

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

7

extglobZaten etkin değilse bunun için etkinleştirmeniz gerekir ( shopt -s extglob):

for dir in !(dirname)/
...
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.