Faça find show slash após diretórios?

19

Como posso fazer com que o comando find mostre uma barra após os diretórios? Por exemplo, eu quero diraparecer como em dir/vez de dir. estou a usarfind . -print

Steven
fonte

Respostas:

10

Portably:

find . -type d -exec sh -c 'printf "%s/\n" "$0"' {} \; -or -print

Se você deseja listar diretórios e arquivos separadamente (pode mesclar a saída classificando):

{ find . -type d -print | sed 's!$!/!'; find . \! -type d; } | sort

Com o GNU find, veja a resposta de Shawn J. Goff .

Se você estiver disposto a arriscar caracteres não imprimíveis serem mutilados, mesmo quando não estiver enviando para um terminal, consulte a resposta do ddeimeke .

No zsh: print -rl -- **/*(DM)( Dpara incluir arquivos de ponto, Mpara adicionar um /diretório posterior)

Gilles 'SO- parar de ser mau'
fonte
O primeiro comando não imprimiu barras finais para mim, mas o segundo.
Steven
15
find . \( -type d -printf "%p/\n" , -type f -print \)

Isso usa o comando printf para formatar nomes de diretório e impressão padrão para o restante.

Shawn J. Goff
fonte
Continuo impressionado com a flexibilidade de encontrar.
Shawn J. Goff
1
Note que -printfé específico para o GNU find.
Gilles 'SO- stop be evil'
Boa resposta. Eu gosto de como findos argumentos posicionais permitem que ele produza resultados avançados como este. No entanto, observe que, sem os espaços ao redor da vírgula, ele não funcionará.
jimp
1
Com base nesta resposta e na de Gilles, vim com a seguinte versão simplificada:find . -type d -printf '%p/\n' -or -print
Teresa e Junior
8

Talvez

find . -print0 | xargs -0 ls -Fd

é uma opção também.

Em uma página de manual do Solaris:

-F Marca diretórios com uma barra final (/), portas com um sinal de final maior que (>), arquivos executáveis ​​com um asterisco final (*), FIFOs com uma barra vertical final (|), links simbólicos com um final " no sinal "(@) e AF_UNIX endereça os soquetes da família com um sinal de igual a final (=). Segue links simbólicos nomeados como operandos.

ddeimeke
fonte
@Gilles: Obrigado pelo "d" ;-)
ddeimeke 15/12/2010
isso aumenta a quantidade de syscalls
Paweł Polewicz 11/11/19