Você pode substituir um por vez em um loop como:
tree --noreport | sed $'
:1
s/^\( *\)\([\ua0\u2500\u2502\u2514\u251C]\)\([\ua0\u2500\u2502\u2514\u251C ]*\u2500 \)/\1 \3/
t1
s|\u2500 | /|'
(você perdeu \ua0
(espaço sem quebra) e \u2502
( │
também mostrado na sua amostra) pelo menos, que aparecem na saída da minha versão de tree
, pelo menos).
Isso é enganoso se houver arquivos cujo nome contenha "─ "
, opcionalmente precedido por alguns desses caracteres.
Outra abordagem (supondo que você queira inserir o /
e que os diretórios que você está chamando tree
on não contêm "─ "
): insira um /
após a primeira ocorrência de "\u2500 "
e, em seguida, substitua todos os caracteres antes do primeiro /
por um espaço em um loop.
tree --noreport | sed '
s|'$'\u2500'' |&/|;t1
b
:1
s|^\( *\)[^ /]| |
t1'
É um pouco mais fácil com perl
:
tree --noreport | perl -C -pe 's{^.*?\x{2500} }{" " x length($&) . "/"}e'