ls-command: como mostrar o tamanho do ficheiro em megabytes?
Em Unix (Tru64), como faço para que o comando ls
mostre o tamanho do ficheiro em megabytes? Actualmente posso mostrá-lo em bytes usando os seguintes comandos:
ls -la
Em Unix (Tru64), como faço para que o comando ls
mostre o tamanho do ficheiro em megabytes? Actualmente posso mostrá-lo em bytes usando os seguintes comandos:
ls -la
Talvez -h
seja suficiente para si:
-h Quando utilizado com a opção -l, utilize sufixos unitários: Byte, Kilobyte, Megabyte, Gigabyte, Terabyte e Petabyte a fim de reduzir o número de dígitos para três ou menos usando a base 2 para tamanhos.
ls -lah
General advice: Utilize os man commandname
para ler o manual/ajuda de um determinado comando, por exemplo, aqui man ls
.
ls --block-size=M
imprime os tamanhos em Megabytes mas mostra 1MB também para qualquer coisa abaixo de 1 MB. Não tenho a certeza se esta opção é aceitável na sua versão UNIX de ls, no entanto.
Na verdade ls -lh
também imprime tamanhos em Gigabytes se o ficheiro for suficientemente grande (Bem de qualquer forma: em Linux 64bit isto funciona :>)
Num nó lateral: du -sh *
imprime também tamanhos de directórios no directório actual.
Terá de usar awk
para fazer as contas por si:
ls -l | awk 'BEGIN{mega=1048576} $5 >= mega {$5 = $5/mega "MB"} {print}'
Isto não afectará a saída para ficheiros mais pequenos que mega
.
Poderá ter de ajustar o número do campo para corresponder à forma como o seu ls
está disposto. Pode alterar o mega
para “1000000” se for essa a sua preferência.
Isto irá imprimir mais casas decimais do que provavelmente pretende. Pode implementar uma função de arredondamento.
Se quiser apenas o tamanho de um ficheiro específico, então o comando, uma extrapolação trivial das respostas anteriores, é:
ls -sh _filename(s)_
-s
é para tamanho e o h
é para Legível Humano (como mencionado acima algumas vezes).
A saída terá o seguinte aspecto:
753M myfilename
Se deixar de fora o(s) nome(s) do(s) ficheiro(s), ele irá listar o directório, colocando o tamanho de cada ficheiro ao lado do seu nome - não muito diferente do que ls -la
faz quando invocado sem argumentos de nome de ficheiro.
Espero que isto ajude.
Se está apenas interessado no tamanho do ficheiro, e não tem de usar o comando ls
, tente o seguinte:
# echo "Hello World" > file.txt
# ls -l file.txt
-rw-r--r-- 1 user user 12 Mar 10 11:32 file.txt
# stat --printf='%s\n' file.txt
12
Isto irá imprimir o tamanho do ficheiro sem a necessidade de analisar nada.