查找大于X值的文件,按大小排序,以ls格式显示

查找大于X值的文件,按大小排序,以ls格式显示

我的任务是:查找文件(在给定的特定目录中),仅显示 100 MB 以上的文件,按大小排序,以 ls -lh 格式打印它们。

这就是我执行的:

find /home/it21366 -size +10M | sort -h | ls -lh

这就是我得到的

-rwxr-xr-x+ 1 it21366 unixusers  12K Απρ  28  2014 a.out
-rwxr-xr-x+ 1 it21366 unixusers  471 Νοέ  29 10:51 askisi.sh
-rw-r--r--+ 1 it21366 unixusers 3,0K Απρ  28  2014 code.c
-rw-r--r--+ 1 it21366 unixusers 3,0K Απρ  28  2014 code.c~
-rw-r--r--+ 1 it21366 unixusers 6,2K Απρ  28  2014 CODE.txt
-rw-------+ 1 it21366 unixusers 2,0M Απρ  28  2014 core
-rwxr-xr-x+ 1 it21366 unixusers   66 Δεκ   6 14:39 it21366_ex_1_1
-rwxr-xr-x+ 1 it21366 unixusers  190 Δεκ   6 14:35 it21366_ex_1_4.sh
-rwxr-xr-x+ 1 it21366 unixusers  190 Δεκ   6 14:27 it21366_ex_1_4.sh~
-rwxr-xr-x+ 1 it21366 unixusers  546 Δεκ   5 17:46 it21366_ex_1_5
-rw-r--r--+ 1 it21366 unixusers 509K Οκτ  23  2014 java01.pdf
-rw-r--r--+ 1 it21366 unixusers 506K Οκτ  23  2014 java02.pdf
-rw-r--r--+ 1 it21366 unixusers 249K Οκτ  11 10:03 lab01_2018-19.pdf
-rw-r--r--+ 1 it21366 unixusers 1,2K Οκτ  24 16:27 MyClock.java
-rw-r--r--+ 1 it21366 unixusers 1,3K Οκτ  30  2013 starthere.desktop
-rw-r--r--+ 1 it21366 unixusers    3 Οκτ  24 12:45 test
-rw-r--r--+ 1 it21366 unixusers   12 Οκτ  24 12:45 TK.txt
-rw-r--r--+ 1 it21366 unixusers  14K Μάι  30  2018 Untitled 1.odt

我无法想象为什么 LS 似乎忽略其他方法,而只是显示未排序和未过滤的文件内容。

答案1

使用 xargs:

find /home/it21366 -size +10M | xargs ls -lhsSr 

答案2

另一种选择是,如果文件数量足够有限,无法容纳一次(长)调用ls,则可以使用find来查找大文件并ls -S进行排序:

find /home/it21366 -type f -size +10M -exec ls -lS {} + 2>/dev/null

指示-exec ... {} +find“找到的”文件替换为对 的调用ls,尽可能多地匹配。如果文件太多,您将收到多次调用,ls从而导致结果未排序(它们将按组排序)。我还添加了-type f将匹配限制为常规文件的功能。

相关内容