Linux ls 命令按大小对文件进行排序
如何使用 Linux ls 命令行实用程序按文件大小对 $HOME/Download/ 目录中的所有 *.avi 或 *.py 文件进行排序?如何使用 ls 命令在 Linux 中按大小排序列出所有文件?
该ls命令用于在 Linux 和类 Unix 操作系统下列出目录内容。如果没有给出选项或操作数,则当前目录的内容将显示在屏幕上。默认情况下,如果没有将任何或选项-cftuvSUX传递--sort给ls命令,则条目将按字母顺序排序。让我们看看如何使用 ls 命令在 Linux 和类 Unix 系统(如 FreeBSD)上按大小对文件进行排序。
在按字典顺序对操作数进行排序之前,您将首先看到最大的文件。以下命令将按相反顺序对文件大小进行排序:
或尝试(请参阅下面的评论,谢谢!):
该ls命令用于在 Linux 和类 Unix 操作系统下列出目录内容。如果没有给出选项或操作数,则当前目录的内容将显示在屏幕上。默认情况下,如果没有将任何或选项-cftuvSUX传递--sort给ls命令,则条目将按字母顺序排序。让我们看看如何使用 ls 命令在 Linux 和类 Unix 系统(如 FreeBSD)上按大小对文件进行排序。
默认输出(按字母顺序排序)
键入以下命令:
$ ls
$ ls *.py
$ ls *.avi
图 01:ls 命令输出
Linux 强制按大小排序选项
您需要将-S或--sort=size选项传递给 Linux 或 Unix 命令行,如下所示:
示例输出:
$ ls -S
$ ls -S -l
$ ls --sort=size -l
$ ls --sort=size *.avi
$ ls -S -l *.avi
图 02:按大小对文件/文件夹(目录)进行排序
$ ls -l -S | sort -k 5 -n
或尝试(请参阅下面的评论,谢谢!):
$ ls -lSr
图 03:Ls 命令按大小反向排序(从小到大)
以人类可读的格式对输出和打印大小进行排序(例如,1K 234M 2G)
将选项传递-h给 ls 命令如下:
$ ls -lSh
$ ls -l -S -h *.avi
$ ls -l -S -h ~/Downloads/*.mp4 | more
在 Linux 上按文件大小对 ls 命令输出进行排序
运行以下 ls 命令:
$ ls -Slh
或
$ ls -Slhr
ls 命令按大小对文件进行排序命令选项
选项 | 描述 |
---|---|
-l | 长列表 |
-S | 按文件大小排序,最大文件优先 |
--sort=size | 按大小排序而不是按文件名排序 |
-r | 排序时反转顺序 |
-h | 人类可读的输出。带有-l和-s选项,打印大小如 1K 234M 2G 等。 |
当所有文件按大小排序时如何排除目录
尝试使用grep 命令过滤 ls 命令的输出:
这是我看到的:
$ ls -lS | grep -v '^d'
$ ls -Slh | grep -v '^d'
$ ls -Slhr | grep -v '^d'
total 289836 -rw-rw-r--. 1 vivek vivek 295599646 Jun 9 2018 lnxpcs-master.zip -rw-rw-r--. 1 vivek vivek 501221 Dec 27 15:49 top.cvs -rw-r--r--. 1 vivek vivek 270466 Jan 30 2018 out -rw-------. 1 vivek vivek 124866 Aug 13 12:38 Receipt Details.pdf -rwxr-xr-x. 1 vivek vivek 47441 Nov 18 2017 speedtest-cli -rw-r--r--. 1 vivek vivek 19419 Feb 9 2018 final.txt -rw-r--r--. 1 vivek vivek 13654 Jan 13 17:09 updated.txt -rw-r--r--. 1 vivek vivek 8247 Aug 14 09:23 example.conf -rw-r--r--. 1 vivek vivek 5083 Jan 8 00:58 wanted.txt -rw-r--r--. 1 vivek vivek 2674 Jan 3 02:47 vpn.config.ovpn -rw-rw-r--. 1 vivek vivek 1539 Jun 8 2018 email-ids.txt
可以使用 find 命令以及 sort 命令来按排序顺序列出目录大小:
$ find . -type d -ls | sort -n -r
或者在排序时仅列出文件并排除所有目录:
$ find . -type f -ls | sort -n -r
这是我看到的:
1619988315 0 drwxr-xr-x 2 vivek vivek 164 Dec 20 15:24 ./images/password-change 1619988314 0 drwxr-xr-x 2 vivek vivek 84 Nov 7 16:26 ./images/dig-not-found 1619988310 0 drwxr-xr-x 2 vivek vivek 106 Sep 21 00:34 ./pfsense/fw0.example.lan 1615242013 0 drwxr-xr-x 2 vivek vivek 83 Jun 19 2018 ./hello-web-app/pdf 1615241993 0 drwxr-xr-x 2 vivek vivek 156 Feb 8 2018 ./books/ssh/ssh2\ twp\ 3\ formats\ 2018-02-07
结论
本页展示了如何在 Linux 或类 Unix 系统中按大小排序列出所有文件。有关更多信息,请参阅 ls 命令手册页,或使用 help 命令或 man 命令离线阅读:
$ man ls
$ ls --help