命令“ ls”显示目录大小而不是块大小

我们是博格

有什么ls我可以用它来显示文件大小为目录参数以及

当我这样做时ls -s,它显示的是我block-size(始终为4k)而不是目录大小。

谢谢!!!

编辑-部分成就

正如@Arronical所说,Command会du -sh *显示文件和目录及其大小。我正在寻找的一个小增强功能是以不同的颜色显示目录,例如ls显示。有任何想法吗。谢谢你。:-)

塞尔吉(Sergiy Kolodyazhnyy)

基本思路

可以ls -l用find模仿例如,对于find将在du找到的每个目录和文件中运行的命令而言,例如

find . -maxdepth 1  ! -name "."   -printf "%M %u %g "  -exec du -sh  {} \; 2> /dev/null 

输出示例(旁注,这里我-type d仅用于演示目录列表;不带此命令-type d将列出所有文件和目录):

DIR:/xieerqi
skolodya@ubuntu:$ find . -maxdepth 1 -type d ! -name "."   -printf "%M %u %g "  -exec du -sh  {} \; 2> /dev/null | head      
drwxrwxr-x xieerqi xieerqi 348K ./addRemoveDistribution
drwxr-xr-x xieerqi xieerqi 2.2G ./Downloads
drwxrwxr-x xieerqi xieerqi 4.0K ./.screenlayout
drwxr-xr-x xieerqi xieerqi 4.0K ./Public
drwxrwxr-x xieerqi xieerqi 28K  ./Youku Files
drwxrwxr-x xieerqi xieerqi 142M ./.minecraft
drwx------ xieerqi xieerqi 20K  ./.gnupg
drwxrwxr-x xieerqi xieerqi 2.5G ./.Genymobile
drwxrwxr-x xieerqi xieerqi 73M  ./genymotion
drwxrwxr-x xieerqi xieerqi 104K ./scripts

注意find具有-ls标志,出于与OP所述原因相同,我在这里使用它-它显示规范的4096字节

简化版

该命令本身可以转换为别名,例如ls2或函数,然后也可以使用$1参数。例如,以下是我放入的内容.bashrc及其工作方式:

function lscwd
{
 # Function to stat files and folders in current dir
 # Takes first argument as directory to stat
 # If no directory supplied, current dir assumed
 if [ -z "$1" ];then
   DIR="."
 else
   DIR="$1"
 fi

 find "$DIR"  -maxdepth 1 ! -name "."   -printf "%M %u %g "  -exec du -sh  {} \; 2> /dev/null 

}

样品运行:

DIR:/xieerqi
skolodya@ubuntu:$ lsc
lscpu lscwd 
skolodya@ubuntu:$ lscwd | head                                                                                               
drwxrwxr-x xieerqi xieerqi 348K ./addRemoveDistribution
drwxr-xr-x xieerqi xieerqi 2.2G ./Downloads
drwxrwxr-x xieerqi xieerqi 4.0K ./.screenlayout
drwxr-xr-x xieerqi xieerqi 4.0K ./Public
drwxrwxr-x xieerqi xieerqi 28K  ./Youku Files
drwxrwxr-x xieerqi xieerqi 142M ./.minecraft
drwx------ xieerqi xieerqi 20K  ./.gnupg
drwxrwxr-x xieerqi xieerqi 2.5G ./.Genymobile
drwxrwxr-x xieerqi xieerqi 73M  ./genymotion
drwxrwxr-x xieerqi xieerqi 104K ./scripts

DIR:/xieerqi
skolodya@ubuntu:$ lscwd /etc | head                                                                                          
drwxr-xr-x root root 18M    /etc
drwxr-xr-x root root 68K    /etc/logrotate.d
drwxr-xr-x root root 36K    /etc/apm
drwxr-xr-x root root 96K    /etc/speech-dispatcher
drwxr-xr-x root root 28K    /etc/jwm
drwxr-xr-x root root 8.0K   /etc/hp
drwxr-xr-x root root 8.0K   /etc/gtk-2.0
drwxr-xr-x root root 20K    /etc/gtkmathview
drwxr-xr-x root root 68K    /etc/xml
drwxr-xr-x root root 8.0K   /etc/esound

输出组织

无法通过find专门为解析文件名而专门对输出进行着色ls着色来自输出中包含的特殊字符,我们并不是真正想要的。

但是,可以读取权限。领先--rwxr-xr-x意味着它是一个普通文件,和领先ddrwxr-xr-x手段目录。

find也有方便的-type标志,我们也可以使用它来过滤输出。例如,这是lscwd

function lscwd2
{
 # Function to stat files and folders in current dir
 # Takes first argument as directory to stat
 # If no directory supplied, current dir assumed
 if [ -z "$1" ];then
   DIR="."
 else
   DIR="$1"
 fi

 # print directories first
 printf "*** DIRECTORIES *** \n"
 find "$DIR"  -maxdepth 1 -type d ! -name "."   -printf "%M %u %g "  -exec du -sh  {} \; 2> /dev/null 
 # print non-directories second
 printf "*** FILES *** \n"

 find "$DIR"  -maxdepth 1 ! -type d ! -name "."   -printf "%M %u %g "  -exec du -sh  {} \; 2> /dev/null 
 }

并输出示例:

DIR:/bin
skolodya@ubuntu:$ lscwd2
*** DIRECTORIES *** 
drwxrwxr-x xieerqi xieerqi 4.0K ./c
drwxrwxr-x xieerqi xieerqi 12K  ./python
drwxrwxr-x xieerqi xieerqi 12K  ./perl
drwxrwxr-x xieerqi xieerqi 4.0K ./ANOTHERDIR
drwxrwxr-x xieerqi xieerqi 4.0K ./random
drwxrwxr-x xieerqi xieerqi 108K ./sh
drwxrwxr-x xieerqi xieerqi 38M  ./cs2
drwxr-xr-x xieerqi xieerqi 414M ./arduino-1.6.7
drwxrwxr-x xieerqi xieerqi 24K  ./codereview
*** FILES *** 
-rwxrwxr-x xieerqi xieerqi 4.0K ./preventShutdown.sh
-rw-rw-r-- xieerqi xieerqi 4.0K ./Dimmer.desktop
-rwxrwxr-x xieerqi xieerqi 4.0K ./updateWarning.sh
-rw-rw-r-- xieerqi xieerqi 4.0K ./somefile.txt
-rw-r--r-- xieerqi xieerqi 4.0K ./.bashrc
-rwxr-xr-x xieerqi xieerqi 4.0K ./setup.sh
-rwxrwxr-x xieerqi xieerqi 4.0K ./whiledemo.csh
-rwxr-xr-x xieerqi xieerqi 4.0K ./fmtcode.awk
-rwxrwxr-x xieerqi xieerqi 4.0K ./batmon.sh
-rwxr-xr-x xieerqi xieerqi 4.0K ./Dimmer.sh
-rw-rw-r-- xieerqi xieerqi 4.0K ./somefile2.txt

输出有时可能会很长,所以我建议将此功能与less分页实用程序结合使用像这样通过管道输出lscwd2 | less

关于ls和stat

人们为什么总是建议duizx在简短而出色的回答中更好地解释了我,但总而言之,在Unix和Linux上,所有内容都是一个文件,而在现实目录中,则是一个包含与其链接的文件列表的文件。因此,statls给予特殊文件的大小,并非所有链接到目录中的文件的总量。但这du就是节省时间的原因。注意其中的描述man du

递归地汇总目录的每个FILE的磁盘使用情况。

du实用程序会跳入每个目录,并在此汇总每个文件的文件大小。lsstat什么做事的方式不同

因此,每个实用程序的目的是非常不同的。ls正在完全按照要求执行操作-列出文件大小,并且来自Windows世界,我们将目录的大小理解为这个“袋子”,如果我可以比较的话,它的大小取决于其中的苹果数量。Unix稍有不同,是的,但是很现实。也许它并不能满足用户的需求,但它在实际的,物理的意义上是有意义的。

另外,默认情况下,块大小为4k,但是一旦文件超过4k,文件系统将需要分配更多空间。例如,我的主文件夹的总大小为73GB。那目录的块大小呢?

DIR:/bin
skolodya@ubuntu:$ ls -ld $HOME
drwxr-xr-x 94 xieerqi xieerqi 16384 Jan 22 07:24 /home/xieerqi/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ls命令的动态块大小

来自分类Dev

命令“ ls -d”未显示目录。有没有办法让“ ls”仅显示目录而不是文件和目录?

来自分类Dev

是否有窗口的命令行选项来显示目录的大小

来自分类Dev

“如何使用ls命令显示目录'/ sbin'中以'az'开头的所有文件/目录?”

来自分类Dev

命令ls | grep仅显示目录(当它还应显示文件时)

来自分类Dev

ls -ls没有显示目录的真实大小

来自分类Dev

获取树命令以不显示目录

来自分类Dev

将ls命令与“路径”一起使用以显示目录内的内容

来自分类Dev

目录的大小在'ls -l'命令的输出中意味着什么?

来自分类Dev

为什么使用 ls 命令显示的文件大小不同?

来自分类Dev

历史记录命令显示目录和日期

来自分类Dev

历史记录命令显示目录和日期

来自分类Dev

键入命令时是否可以自动显示目录内容?

来自分类Dev

ls -s命令,什么类型的文件大小

来自分类Dev

在默认的PowerShell ls命令中显示人类可读的文件大小

来自分类Dev

显示文件和大小缓慢命令

来自分类Dev

ping 命令包大小

来自分类Dev

ls命令和shell脚本中的文件大小

来自分类Dev

从ls命令获取访问权限,文件名及其大小

来自分类Dev

为什么ls命令没有列出巨大的文件大小?

来自分类Dev

作为ls命令输出的文件大小的不同度量

来自分类Dev

Laravel命令php artisan服务显示目录不存在

来自分类Dev

可以将“ cd”的命令完成修改为仅显示目录并忽略文件吗?

来自分类Dev

Laravel命令php artisan服务显示目录不存在

来自分类Dev

ls命令认为目录是文件

来自分类Dev

使用du命令的Centos 6.5目录大小不正确

来自分类Dev

检查目录大小是否大于1g的命令

来自分类Dev

cp命令处理空目录(导致diff文件大小)

来自分类Dev

Linux find命令-如何按大小查找目录?

Related 相关文章

  1. 1

    ls命令的动态块大小

  2. 2

    命令“ ls -d”未显示目录。有没有办法让“ ls”仅显示目录而不是文件和目录?

  3. 3

    是否有窗口的命令行选项来显示目录的大小

  4. 4

    “如何使用ls命令显示目录'/ sbin'中以'az'开头的所有文件/目录?”

  5. 5

    命令ls | grep仅显示目录(当它还应显示文件时)

  6. 6

    ls -ls没有显示目录的真实大小

  7. 7

    获取树命令以不显示目录

  8. 8

    将ls命令与“路径”一起使用以显示目录内的内容

  9. 9

    目录的大小在'ls -l'命令的输出中意味着什么?

  10. 10

    为什么使用 ls 命令显示的文件大小不同?

  11. 11

    历史记录命令显示目录和日期

  12. 12

    历史记录命令显示目录和日期

  13. 13

    键入命令时是否可以自动显示目录内容?

  14. 14

    ls -s命令,什么类型的文件大小

  15. 15

    在默认的PowerShell ls命令中显示人类可读的文件大小

  16. 16

    显示文件和大小缓慢命令

  17. 17

    ping 命令包大小

  18. 18

    ls命令和shell脚本中的文件大小

  19. 19

    从ls命令获取访问权限,文件名及其大小

  20. 20

    为什么ls命令没有列出巨大的文件大小?

  21. 21

    作为ls命令输出的文件大小的不同度量

  22. 22

    Laravel命令php artisan服务显示目录不存在

  23. 23

    可以将“ cd”的命令完成修改为仅显示目录并忽略文件吗?

  24. 24

    Laravel命令php artisan服务显示目录不存在

  25. 25

    ls命令认为目录是文件

  26. 26

    使用du命令的Centos 6.5目录大小不正确

  27. 27

    检查目录大小是否大于1g的命令

  28. 28

    cp命令处理空目录(导致diff文件大小)

  29. 29

    Linux find命令-如何按大小查找目录?

热门标签

归档