Fazer encontrar barra de mostrar depois de diretórios?

18

Como posso fazer o comando find mostrar uma barra depois de diretórios? Por exemplo, quero que dir apareça como dir/ em vez de dir . Estou usando find . -print

    
por Steven 15.12.2010 / 02:28

3 respostas

9

Portável:

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

Se você estiver disposto a listar diretórios e arquivos separadamente (você pode mesclar a saída por classificação):

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

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

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

Em zsh: print -rl -- **/*(DM) ( D para incluir arquivos de ponto, M para adicionar / depois de diretórios)

    
por 15.12.2010 / 09:20
13
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.

    
por 15.12.2010 / 03:50
7

Talvez

find . -print0 | xargs -0 ls -Fd

é uma opção também.

De uma página de manual do Solaris:

-F Marks directories with a trailing slash (/), doors with a trailing greater-than sign (>), executable files with a trailing asterisk (*), FIFOs with a trailing vertical bar (|), symbolic links with a trailing "at" sign (@), and AF_UNIX address family sockets with a trailingequals sign (=). Follows symlinks named as operands.

    
por 15.12.2010 / 08:23

Tags