Özyinelemeli bir buluntu yaparken çok dikkatli olmak isteyeceksiniz binve obj... örneğin, .../.hg/store/data/objiyi bir fikir olmayacak önemli dosya veya dizinleri kazara açabilirsiniz (örneğin :).
Mümkün olan her yerde, olabildiğince hassas olmak istersiniz. Dizinleri kaldırmaya çalışıyorsanız, -type dyanlışlıkla bir dosya / symlink / etc ile eşleşmeyecek şekilde belirtin ...
Ek olarak, bu okunabilirlik / bakım kolaylığı için bir dizi işlev olarak fayda sağlayacağı kadar büyüktür.
Bu işlev kümesi (ve nihayet diğer adı değiştirilebilen / işleve sokulabilen bir boru hattı), bir dosyanın yanındaki tüm dizinleri binve tüm objklasörleri kaldıracaktır makefile(tümü büyük / küçük harf duyarlı). Toplam bayt, " " gibi bir çıktı almak stderriçin utangaç kullanarak yazılacaknumfmt9.1MB
function getMakefiles {
find . -type f -iname makefile
}
function getBinObjDirsNear {
while read NEAR; do
find $(dirname ${NEAR}) -type d -maxdepth 1 \( -iname bin -o -iname obj \)
done
}
function calcTotal {
TOTAL=0
while read ENT; do
TOTAL=$(( TOTAL + $(du -bc ${ENT} | tail -n 1 | cut -f 1) ))
echo ${ENT}
done
numfmt --to=iec --suffix=B --format="%f" ${TOTAL} >&2
}
getMakefiles | getBinObjDirsNear | calcTotal | xargs -d '\n' rm -rf