du comando mostra uma barra após diretórios?

6

Como usar o comando du , mostrar uma barra após os diretórios?

Por exemplo:

du -ab /root/test/php-5.4.8/

Resultado:

1781    /root/test/php-5.4.8/main/internal_functions.c.in
973596  /root/test/php-5.4.8/main
3841    /root/test/php-5.4.8/netware/start.c
577     /root/test/php-5.4.8/netware/sendmail_nw.h
8514    /root/test/php-5.4.8/netware
4957    /root/test/php-5.4.8/README.TESTING2
4561    /root/test/php-5.4.8/.gitignore

No entanto, quero que os diretórios incluam barra final, por exemplo:

1781    /root/test/php-5.4.8/main/internal_functions.c.in
973596  /root/test/php-5.4.8/main/
3841    /root/test/php-5.4.8/netware/start.c
577     /root/test/php-5.4.8/netware/sendmail_nw.h
8514    /root/test/php-5.4.8/netware/
4957    /root/test/php-5.4.8/README.TESTING2
4561    /root/test/php-5.4.8/.gitignore

Eu consegui fazer o comando find mas ele não incluirá o tamanho total do arquivo dos diretórios e é por isso que eu tenho que usar o comando du

find /root/test/php-5.4.8/ \( -type d -printf "%s %p/\n" , -type f -printf "%s " -print \)
    
por I'll-Be-Back 20.10.2012 / 21:44

2 respostas

3

Apenas faça funcionar com um pequeno script bash. Imprima o tamanho e o nome do arquivo, se for um diretório, adicione uma barra à direita.

du -ab | while IFS=$'\t' read -r size line; do printf "%s\t%s" $size "$line"; [[ -d $line ]] && printf "/"; echo; done

Isso funcionará com qualquer nome de arquivo que não contenha novas linhas ou que termine com uma guia.

    
por 20.10.2012 / 22:04
2

Meu truque favorito com o GNU du .

du -chs -- */ *

Como o du de exclui duplicatas em argumentos de linha de comando, ele funciona e imprime a barra automaticamente desde que você forneceu a barra para a pasta.

    
por 21.10.2012 / 09:08