如何使用 bash 以下面的格式显示最大的文件
How to display the top largest files in the format below using bash
-bash-4.1$ ./folder-stats-2.sh
Top 5 files:
./index.html 4000 bytes
./CS133/lab1.html 3245 bytes
./CS118/CW1/Ex1.java 2512 bytes
./CS118/CW2/GrandFinale.java 204 bytes
./.bashrc 20 bytes
我正在编写一个 bash 脚本,我想知道当脚本在当前目录中运行时如何找到前 5 个最大的文件。提前致谢。
编辑:这是一项任务,不允许使用 du、locate、find 和任何递归命令来完成任务
du -ab |sort -nr|head -6
在上一行:
du
-a : all files
-b : use byte as unit
sort
-n : sort as number
-r : reversely
head -6 : we take the first 6 lines,
because the 1st line output by `du`
is the total size of your directory..
输出格式如下:
777777 .
77777 ./foo/bar
7777 ./foo/bar/a.big
777 ./foo/bar/b.big
77 ./foo/bar/blah/bigfile
7 ./other/dir/file
您可以使用此 stat
、sort
、awk
组合:
stat -c "%n:%F:%s" * | sort -t: -rnk3,3 | awk -F: '=="regular file"{
printf "%25s\t%s bytes\n", , } NR>5{exit}'
foo.txt 639 bytes
bar.sh 453 bytes
myscript.sh 383 bytes
baz.pl 330 bytes
proc.sql 328 bytes
stat -c "%n:%F:%s"
打印所有文件名、文件类型和文件大小
sort -t: -rnk3,3
用于对第 3 列(大小) 进行反向数字排序
awk
命令搜索条件为 =="regular file"
的所有行(仅打印常规文件)并使用 printf
打印格式化输出。一旦我们打印了 5 行,NR>5{exit}
退出 awk
进程。
因为这是一项作业,所以我只会让您入门。
你可能想从
开始
for x in * .*
然后在循环中检查“$x”是否是文件、目录或符号链接
.
和 ..
你会想要忽略
- 符号链接,我猜你也忽略了
- 您检查大小的文件,如果在前 5 个中,请记住它们
- 递归到的目录。
当循环结束时,打印结果。
-bash-4.1$ ./folder-stats-2.sh
Top 5 files:
./index.html 4000 bytes
./CS133/lab1.html 3245 bytes
./CS118/CW1/Ex1.java 2512 bytes
./CS118/CW2/GrandFinale.java 204 bytes
./.bashrc 20 bytes
我正在编写一个 bash 脚本,我想知道当脚本在当前目录中运行时如何找到前 5 个最大的文件。提前致谢。
编辑:这是一项任务,不允许使用 du、locate、find 和任何递归命令来完成任务
du -ab |sort -nr|head -6
在上一行:
du
-a : all files
-b : use byte as unit
sort
-n : sort as number
-r : reversely
head -6 : we take the first 6 lines,
because the 1st line output by `du`
is the total size of your directory..
输出格式如下:
777777 .
77777 ./foo/bar
7777 ./foo/bar/a.big
777 ./foo/bar/b.big
77 ./foo/bar/blah/bigfile
7 ./other/dir/file
您可以使用此 stat
、sort
、awk
组合:
stat -c "%n:%F:%s" * | sort -t: -rnk3,3 | awk -F: '=="regular file"{
printf "%25s\t%s bytes\n", , } NR>5{exit}'
foo.txt 639 bytes
bar.sh 453 bytes
myscript.sh 383 bytes
baz.pl 330 bytes
proc.sql 328 bytes
stat -c "%n:%F:%s"
打印所有文件名、文件类型和文件大小sort -t: -rnk3,3
用于对第 3 列(大小) 进行反向数字排序
awk
命令搜索条件为=="regular file"
的所有行(仅打印常规文件)并使用printf
打印格式化输出。一旦我们打印了 5 行,NR>5{exit}
退出awk
进程。
因为这是一项作业,所以我只会让您入门。 你可能想从
开始for x in * .*
然后在循环中检查“$x”是否是文件、目录或符号链接
.
和..
你会想要忽略- 符号链接,我猜你也忽略了
- 您检查大小的文件,如果在前 5 个中,请记住它们
- 递归到的目录。
当循环结束时,打印结果。