我是 bash 新手,我需要编写一个小脚本来汇总所有文件大小(不包括子目录)。我的第一个想法是保留这些列ls -l
。我无法使用 grep、du 或我在这里看到的其他高级命令。
$9 对应于显示名称的第 9 列。
$5 是文件的大小。
ls -l | awk '{if(-f $9) { total +=$5 } }; END { print total }
Run Code Online (Sandbox Code Playgroud) 作为实践,我需要完成一个脚本,该脚本通过给定扩展名(例如 .txt)(包括子目录中的扩展名)按大小对所有填充进行排序。
For example;
./ex1.sh einstein txt
einstein/copyright.txt
einstein/do-how.txt
einstein/etext9/bil11.txt
einstein/etext9/2ws271.txt
einstein/etext9/liber11.txt
einstein/etext0/bib0010h/Readme.txt
einstein/etext0/kknta10.txt
Run Code Online (Sandbox Code Playgroud)
我不能使用 du 或其他高级命令。在某些时候我需要使用查找,我尝试了这样的事情
find -depth - type f -name "*.$extension" | sort ....
Run Code Online (Sandbox Code Playgroud)
但这并不能很好地工作,因为我真的不知道如何按大小对它们进行排序,只有我得到的结果是按名称排序的。
我正在寻找类似于 ls -lhS 但包括子目录的输出。