Como outros já disseram nos comentários, listar apenas não diretórios não combina exatamente com a finalidade do comando tree
.
No entanto, listar apenas os arquivos no diretório atual não é incomum se você for como eu e preferir usar um personalizado tree
over ls
(e talvez você tenha alias ls
to tree
com seus flags e argumentos preferidos.
Aproveitando uma combinação de tree
e grep
, você obterá o que deseja:
$ tree -F
.
├── file1.txt
├── file5.txt
├── parent_dir1/
│ ├── child_dir/
│ ├── file2.txt
│ └── file3.txt
└── parent_dir2/
└── child_dir2/
└── file4.txt
4 directories, 4 files
$ tree -FL 1 | grep -v /$
.
├── file1.txt
├── file5.txt
2 directories, 1 file
O sinalizador 'F' faz com que tree
anexe um '/' aos diretórios, e o sinalizador 'v' para grep
inverte o padrão fornecido, o que corresponde a todas as linhas que terminam em '/'.
Você notará que mesmo o resumo no final ainda é aplicável, apesar do fato de os diretórios não estarem sendo exibidos.
Quando você sobe mais de um nível, a estrutura da árvore domina e as coisas ficam um pouco estranhas.
$ tree -FL 3 | grep -v /$
.
├── file1.txt
├── file5.txt
│ ├── file2.txt
│ └── file3.txt
└── file4.txt
4 directories, 4 files
EDITAR
Além disso, se o tipo de saída de árvore quebrada o incomoda (isto é, o fato de que alguns arquivos são prefaciados pelo caractere '├─' em vez do caractere '└─', e a versão de vários níveis parece apenas se desgastar ...), você pode consertar isso classificando os diretórios de saída, primeiro.
$ tree --dirsfirst -FL 1 | grep -v /$
.
├── file1.txt
└── file5.txt
2 directories, 1 file
$ tree --dirsfirst -FL 3 | grep -v /$
.
│ ├── file2.txt
│ └── file3.txt
│ └── file4.txt
├── file1.txt
└── file5.txt
4 directories, 5 files
Acho que isso também torna a estrutura de árvore sem nós mais legível.