Aqui está o find + awk + numfmt version. Porque -ls é um sinalizador para encontrar o comando, não uma instância de ls, você não pode usar -lh flags também. No entanto, se você insistir em usar o -ls
flag com find, também podemos tentar formatar o tamanho do arquivo em formato legível por humanos. O tamanho do arquivo na saída de find
com o sinalizador -ls é o campo nº7, portanto, usando o io bidirecional do awk , basta converter esse campo para um formato legível e substituí-lo.
find / -user web132 -ls |
awk '{ command="numfmt --to=iec "; command $7 | getline result; $7=result;print; close(command) }'
Veja o exemplo da minha pasta pessoal:
$ find . -maxdepth 1 -user xieerqi -ls | awk '{ command="numfmt --to=iec "; command $7 |& getline result; $7=result;print; close(command) }'
3018363 4 drwxr-xr-x 43 xieerqi xieerqi 4.0K Jun 22 00:33 .
3409153 4 drwx------ 3 xieerqi xieerqi 4.0K Jun 22 00:33 ./.gconf
3018459 4 -rw-rw-r-- 1 xieerqi xieerqi 756 Jun 11 00:08 ./record
3018368 16 -rw------- 1 xieerqi xieerqi 13K Jun 21 23:14 ./.bash_history
3018364 12 -rw-r--r-- 1 xieerqi xieerqi 8.8K May 28 03:59 ./examples.desktop
3018535 4 -rw-rw-r-- 1 xieerqi xieerqi 64 Jun 21 16:04 ./testfile.txt
3018473 4 drwxrwxr-x 2 xieerqi xieerqi 64 Jun 16 23:28 ./netmanager
Nota: da discussão nos comentários abaixo, parece que mawk
tem problemas, mas gawk
(GNU awk) funciona perfeitamente bem. Eu descobri uma abordagem para o mawk, que meramente faz uso de substituir $ 7 não como um argumento, mas como parte do comando, que depois é expandido. Aqui está o que eu quero dizer:
find . -maxdepth 1 -user xieerqi -ls | mawk '{command="numfmt --to=iec "$7; command | getline var; $7=var;print }'