Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用bash以下面的格式显示最大的文件_Bash_Shell - Fatal编程技术网

如何使用bash以下面的格式显示最大的文件

如何使用bash以下面的格式显示最大的文件,bash,shell,Bash,Shell,我正在写一个bash脚本,我想知道当脚本在当前目录下运行时,如何找到前5个最大的文件。提前谢谢 编辑:这是一个赋值,不允许使用du、locate、find和任何递归命令来完成任务 -bash-4.1$ ./folder-stats-2.sh Top 5 files: ./index.html 4000 bytes ./CS133/lab1.html 3245 bytes ./CS118/CW1/Ex1.java

我正在写一个bash脚本,我想知道当脚本在当前目录下运行时,如何找到前5个最大的文件。提前谢谢


编辑:这是一个赋值,不允许使用du、locate、find和任何递归命令来完成任务

-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
在上述行中:

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..
在上述行中:

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..

您可以使用此
stat
sort
awk
组合:

777777  .
77777   ./foo/bar
7777    ./foo/bar/a.big
777     ./foo/bar/b.big
77      ./foo/bar/blah/bigfile
7       ./other/dir/file
  • stat-c“%n:%F:%s”
    打印所有文件名、文件类型和文件大小
  • sort-t:-rnk3,3
    用于列#3(大小)上的反向数字排序
  • awk
    命令搜索条件为
    $2==“常规文件”
    (仅打印常规文件)的所有行,并使用
    printf
    打印格式化输出
    NR>5{exit}
    exits
    awk
    打印5行后处理

您可以使用此
stat
排序
awk
组合:

777777  .
77777   ./foo/bar
7777    ./foo/bar/a.big
777     ./foo/bar/b.big
77      ./foo/bar/blah/bigfile
7       ./other/dir/file
  • stat-c“%n:%F:%s”
    打印所有文件名、文件类型和文件大小
  • sort-t:-rnk3,3
    用于列#3(大小)上的反向数字排序
  • awk
    命令搜索条件为
    $2==“常规文件”
    (仅打印常规文件)的所有行,并使用
    printf
    打印格式化输出
    NR>5{exit}
    exits
    awk
    打印5行后处理

因为这是一项任务,所以我只会让你开始。 你可能想从

stat -c "%n:%F:%s" * | sort -t: -rnk3,3 | awk -F: '$2=="regular file"{
    printf "%25s\t%s bytes\n", $1, $3} NR>5{exit}'
                  foo.txt   639 bytes
                   bar.sh   453 bytes
              myscript.sh   383 bytes
                   baz.pl   330 bytes
                 proc.sql   328 bytes
然后在循环中检查“$x”是文件、目录还是符号链接

  • 您将要忽略
  • 符号链接,我猜,你也忽略了
  • 检查文件大小,如果在前5名,请记住它们
  • 您递归到的目录

循环结束后,打印结果。

因为这是一项任务,所以我只让您开始。 你可能想从

stat -c "%n:%F:%s" * | sort -t: -rnk3,3 | awk -F: '$2=="regular file"{
    printf "%25s\t%s bytes\n", $1, $3} NR>5{exit}'
                  foo.txt   639 bytes
                   bar.sh   453 bytes
              myscript.sh   383 bytes
                   baz.pl   330 bytes
                 proc.sql   328 bytes
然后在循环中检查“$x”是文件、目录还是符号链接

  • 您将要忽略
  • 符号链接,我猜,你也忽略了
  • 检查文件大小,如果在前5名,请记住它们
  • 您递归到的目录


循环结束后,打印结果。

尝试使用
du
sort
以及head/tail。然后,对于格式化,您可以使用awkIts分配,并且不允许使用du、locate、find和任何递归命令来完成任务。然后您应该编辑您的问题!另外,添加到目前为止您已经尝试过的内容。
这是一个作业
但OP根本没有尝试过。我做过一次尝试,几乎是完美的,TOP=$(ls-ls-a-S-h-p | head-6 | awk'{$6,$10}')尝试使用
du
sort
和head/tail。然后,对于格式化,您可以使用awkIts分配,并且不允许使用du、locate、find和任何递归命令来完成任务。然后您应该编辑您的问题!另外,添加到目前为止您已经尝试过的内容。
这是一个作业
但OP根本没有尝试过。我做过一次尝试,几乎是完美的,TOP=$(ls-ls-a-S-h-p | head-6 | awk'{$6,$10}')虽然这个答案很完美,但我不能使用它,我不能使用du或任何递归命令。我需要另一种方法。虽然这个答案很完美,但我不能使用它,我不能使用du或任何递归命令。我需要另一种方法。这个解决方案看起来不错,而且似乎确实奏效。你能解释一下它是怎么工作的吗?看起来有点复杂。下面这样的解释将是非常可取的。不过,如果你没有时间,那也没问题。谢谢,我不能让这个例子产生相同的结果output@Jasen当前位置对OP和我都有效。你是说这是
前5个文件:
标题吗?OP很满意,如果他想在作业中作弊,我没问题,谷歌会向他的导师展示他从哪里获得代码的,我的意思是在子目录中找到文件的示例。这个解决方案看起来很不错,看起来确实奏效。你能解释一下它是怎么工作的吗?看起来有点复杂。下面这样的解释将是非常可取的。不过,如果你没有时间,那也没问题。谢谢,我不能让这个例子产生相同的结果output@Jasen当前位置对OP和我都有效。你是说这是
前5个文件:
标题吗?OP很满意,这对我来说很好,如果他想在作业中作弊,谷歌会告诉他的导师他从哪里得到代码,我的意思是在子目录中找到的示例文件。