A árvore suporta o sinalizador -I
.
-I pattern
Do not list those files that match the wild-card pattern.
A árvore suporta um único padrão que excluirá todos os arquivos / diretórios que correspondam a ele.
Os arquivos de ignorar do Git são um pouco mais complicados:
A exclusão pode vir de vários arquivos, $HOME/.config/git/ignore
, a saída de git config --get core.excludesfile
, .gitignore
(por diretório), ~/.gitignore
e mais (consulte man gitignore
).
Outro problema é que os padrões que tree
suporta diferem do que o git faz (como observado por @Brad Urani).
Mas podemos nos aproximar ...
tree -I "$(grep -hvE '^$|^#' {~/,,$(git rev-parse --show-toplevel)/}.gitignore|sed 's:/$::'|tr \n '\|')"
Ou como uma função:
function gtree {
git_ignore_files=("$(git config --get core.excludesfile)" .gitignore ~/.gitignore)
ignore_pattern="$(grep -hvE '^$|^#' "${git_ignore_files[@]}" 2>/dev/null|sed 's:/$::'|tr '\n' '\|')"
if git status &> /dev/null && [[ -n "${ignore_pattern}" ]]; then
tree -I "${ignore_pattern}" "${@}"
else
tree "${@}"
fi
}