Como posso modificar o padrão ls
( Get-ChildItem
) no PowerShell para exibir tamanhos de arquivo legíveis por humanos, como ls -h
em uma máquina * nix?
ls -lh
faz lógica simples com o tamanho do arquivo, para que ele mostre bytes para arquivos realmente pequenos, kilobytes para arquivos com mais de 1K (com uma casa decimal se for inferior a 10K) e megabytes para arquivos com mais de 1M (com uma casa decimal se for inferior a 10MB) .
powershell
powershell-2.0
Tom Mayfield
fonte
fonte
Update-TypeData : Error in TypeData "System.IO.FileInfo": The member DefaultDisplayPropertySet is already present.
última versão completa do PS3 de 9/4.Get-ChildItem
que só iria fazer isso fora da caixa-DefaultDisplayPropertySet
que trabalhar?Primeiro, crie a seguinte função:
Você, então, pode canalizar a saída do
Get-ChildItem
meioSelect-Object
e usar uma propriedade calculada para formatar o tamanho do arquivo:Obviamente, a função pode ser aprimorada para levar em consideração os tamanhos na faixa PB e mais, ou para variar o número de casas decimais, conforme necessário.
fonte
ls2
, tente criar outra função que faça a lógica que você descreveu com base em um parâmetro e adicione um alias para ele. Veja aqui para mais informações sobre como criar aliases.Get-Variable profile
a localização).$size
é definido como umint
, que é umint32
. Para que isso funcione com arquivos grandes, defina$size
comoint64
ouuint64
.Algo parecido com o seguinte para listar apenas tamanhos de arquivo. Sim, é um pouco dolorido para os olhos, mas consegue fazer o trabalho.
Para converter para KB:
Para converter para MB:
fonte
pipe
solução!com base na resposta de walid toumi:
Passos a fazer:
FileSize
-Property$PROFILE
Crie seu próprio arquivo de tipo com o novo
FileSize
-PropertyCrie seu próprio arquivo de tipo:
MyTypes.ps1xml
(eu o coloquei
$Env:USERPROFILE\Documents\WindowsPowershell
, logo ao lado do meu$PROFILE
)carregue a nova propriedade em uma sessão do PowerShell:
Update-TypeData -PrependPath $Env:USERPROFILE\Documents\WindowsPowershell\MyTypes.ps1xml
Get-ChildItem | Format-Table -Property Name, Length, FileSize
Alterar o formato de saída padrão para FileInfo
crie seu próprio arquivo Fileformat:
MyFileFormat.format.ps1xml
(Novamente em$Env:USERPROFILE\Documents\WindowsPowershell\
)(É allmost uma cópia direta do original
$PSHOME\FileFormat.format.ps1xml
. Eu só mudouLength
aFileSize
algumas vezes)carregue o novo formato em nossa sessão do PowerShell:
Update-FormatData -PrependPath $Env:USERPROFILE\Documents\WindowsPowershell\MyFileFormat.format.ps1xml
Get-ChildItem
carregar as alterações em
$PROFILE
copie essas linhas para
$PROFILE
carregar as alterações em cada nova sessãofonte