Вы должны быть очень осторожны при выполнении рекурсивного поиска для bin и obj ... например, вы можете случайно выскочить из важных файлов или каталогов (например: .../.hg/store/data/obj), что не будет хорошей идеей.
Там, где это возможно, вы хотите быть максимально точным. Если вы пытаетесь удалить каталоги, укажите -type d чтобы случайно не найти файл / символическую ссылку / etc ...
Кроме того, он достаточно велик, поэтому было бы полезно иметь набор функций для удобочитаемости / удобства обслуживания.
Этот набор функций (и, наконец, конвейер, который можно связать / поместить в функцию) удалит все каталоги bin и obj которые находятся рядом с файлом с именем makefile (все без учета регистра).
Всего байтов будет записано в stderr с помощью shy numfmt для получения вывода, такого как « 9.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