我的任务是:查找文件(在给定的特定目录中),仅显示 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
将匹配限制为常规文件的功能。