Você precisará ser muito cuidadoso ao fazer um rastreamento recursivo para bin
e obj
... por exemplo, você pode acidentalmente abrir arquivos ou diretórios importantes (por exemplo: .../.hg/store/data/obj
) que não seria um boa ideia.
Sempre que possível, você quer ser o mais preciso possível. Se você estiver tentando remover diretórios, especifique -type d
para que você não corresponda acidentalmente a um arquivo / link simbólico / etc ...
Além disso, isso é grande o suficiente para se beneficiar de um conjunto de funções para legibilidade / manutenção.
Esse conjunto de funções (e, finalmente, um pipeline que pode ser colocado em alias / colocado em uma função) removerá todos os diretórios bin
e obj
que estão ao lado de um arquivo chamado makefile
(insensitivo a maiúsculas e minúsculas).
O total de bytes será gravado em stderr
usando o shy numfmt
para obter saída como " 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