排除命令中的子目录

排除命令中的子目录

我需要提供目录中文件的详细列表下降的顺序文件大小。只为了包括10个文件在我的输出中。我不能包含子目录在我的输出中。我遇到了最后一部分的问题,到目前为止,“不包括子目录”是我所拥有的,但我坚持排除子目录。另外,如果您可以查看下面的命令来建议这是否正确

de@Classbox:~/LI_1/etc$ ls -lh -S | sort -r |head -10

我知道如果我使用grep -v d它会排除目录,但我需要它来排除子目录。

答案1

如果您按“人类可读”文件大小排序,则不要期望得到有意义的结果。尝试

ls -l| sort -k1,1.1 -k5nr | head -n 10

如果常规文件少于10个,则需要采取额外措施。

答案2

使用zsh外壳:

printf '%s\n' *(.OL[1,10])

(.OL[1,10])是一个全局修饰符它修改前面的 glob 模式 ( ) 的行为*。在这种情况下,.意味着它将仅匹配常规文件(即不匹配目录、套接字、fifo 等),意味着根据文件大小/长度 ( ) 按OL降序 ( ) 排序。将返回的匹配项数量限制为前 10 个。OL[1,10]

要包含隐藏文件,请将GLOB_DOTSshell 选项设置为setopt GLOB_DOTS.

相关内容