如何在Linux中找到最大和最小的目录和文件

时间:2020-03-21 11:44:26  来源:igfitidea点击:

如果我们关注磁盘空间,我们必须知道哪些目录和文件正在分发更多空间,这是最小的。
这将为我们提供一个想法,摆脱占用驱动器空间的不必要的目录和文件。
此外,我们还可以将它们备份或者存档到外部驱动器中以释放一些空间。
在这篇简短的教程中,我们将讨论如何在Unix的操作系统中找到最大和最小的目录和文件。

在Linux中查找最大和最小的目录和文件

首先让我们了解如何在Linux系统中找到最大的目录和文件。

1.在Linux/Unix中找到最大的目录和文件

据我所知,没有一个命令可以找到最大的目录和文件。
但是,我们可以使用一些命令组合来实现这项任务。

要查找当前工作目录中最大的十目录和文件,刚刚运行:

$sudo du -a | sort -n -r | head -n 10

示例输出:

324793508 .
175393112 ./Soft_Backup
114384256 ./Soft_Backup/VHD's
76665704 ./Personal
58237276 ./Soft_Backup/OS Images
48053708 ./Soft_Backup/OS Images/Linux
32940784 ./Personal/Tutors
28189472 ./Downloads
26067640 ./Personal/Study
23741692 ./VirtualBox VMs

其中:

  • du:磁盘使用命令估计文件空间使用情况
  • -a:显示所有目录和文件
  • sort:排序文本文件的行
  • -n:根据字符串数值进行比较
  • -R:逆转比较结果
  • head:输出文件的第一部分
  • -N 10:打印前10个

要以人类可读格式(以KB,MB,GB等)查看上述结果,只需添加参数"H",如下所示。

$sudo du -ah | sort -n -r | head -n 10

如上所述,我们在当前工作目录中列出了所有文件和目录及其子目录。

要显示特定目录的最大目录和文件,例如/var,运行:

$sudo du /var -a | sort -n -r | head -n 10

示例输出:

9317388 /var
5159660 /var/cache
5129476 /var/cache/pacman
5129472 /var/cache/pacman/pkg
2304368 /var/lib
1979572 /var/lib/docker
1976628 /var/lib/docker/devicemapper
1976532 /var/lib/docker/devicemapper/devicemapper
1974172 /var/lib/docker/devicemapper/devicemapper/data
1853276 /var/log

要以人类可读格式显示上述结果,请添加"-h"参数:

$sudo du -ah /var | sort -n -r | head -n 10

让我们在当前工作目录及其子目录中找到最大的文件:

$sudo find -printf '%s %p\n'| sort -nr | head -10

示例输出:

14621343744 ./Soft_Backup/VHD's/openSUSE 42.1 Leap Desktop/openSUSE 42.1 Leap Desktop.vdi
13767896472 ./Downloads/3.0.6/eos-amd64-amd64/en/eos-eos3.0-amd64-amd64.161109-081728.en.img.xz.part
12878610432 ./VirtualBox VMs/Ubuntu 16.04 LTS Desktop/Ubuntu 16.04 LTS Desktop.vdi
12834570240 ./Soft_Backup/VHD's/Ubuntu 16.04 LTS Desktop/Ubuntu 16.04 LTS Desktop.vdi
9360637952 ./VirtualBox VMs/Fedora 24 Desktop/Fedora 24 Desktop.vdi
7785676800 ./Soft_Backup/VHD's/Ubuntu 14.04 LTS desktop/Ubuntu 14.04 LTS desktop.vdi
7523532800 ./Soft_Backup/VHD's/Fedora 23 desktop/Fedora 23 desktop.vdi
7223640064 ./Soft_Backup/VHD's/FreeBSD 10.3 MATE desktop/FreeBSD 10.3 MATE desktop.vdi
6510608384 ./Soft_Backup/VHD's/Windows 7/Windows 7.vdi
6323896320 ./Soft_Backup/VHD's/Fedora 23 desktop/.goutputstream-UT19IY

此外,我们可以通过在上面的命令中添加"-type f"标志来跳过目录并仅显示文件:

$sudo find -type f -printf '%s %p\n'| sort -nr | head -10

示例输出:

14621343744 ./Soft_Backup/VHD's/openSUSE 42.1 Leap Desktop/openSUSE 42.1 Leap Desktop.vdi
13767896472 ./Downloads/3.0.6/eos-amd64-amd64/en/eos-eos3.0-amd64-amd64.161109-081728.en.img.xz.part
12878610432 ./VirtualBox VMs/Ubuntu 16.04 LTS Desktop/Ubuntu 16.04 LTS Desktop.vdi
12834570240 ./Soft_Backup/VHD's/Ubuntu 16.04 LTS Desktop/Ubuntu 16.04 LTS Desktop.vdi
9360637952 ./VirtualBox VMs/Fedora 24 Desktop/Fedora 24 Desktop.vdi
7785676800 ./Soft_Backup/VHD's/Ubuntu 14.04 LTS desktop/Ubuntu 14.04 LTS desktop.vdi
7523532800 ./Soft_Backup/VHD's/Fedora 23 desktop/Fedora 23 desktop.vdi
7223640064 ./Soft_Backup/VHD's/FreeBSD 10.3 MATE desktop/FreeBSD 10.3 MATE desktop.vdi
6510608384 ./Soft_Backup/VHD's/Windows 7/Windows 7.vdi
6323896320 ./Soft_Backup/VHD's/Fedora 23 desktop/.goutputstream-UT19IY

要查找特定目录(例如/var)中的最大文件及其子目录只提到目录的路径,如下所示:

$sudo find /var -printf '%s %p\n'| sort -nr | head -10

我们现在有关于如何找到最大文件和目录的基本思想。
最小的文件和目录如何?
这也很容易找出。

2.在Linux/Unix中查找最小的目录和文件

要在当前工作目录中查看前十个最小目录,请运行:

$du -S . | sort -n | head -10

示例输出:

4 ./.adobe
4 ./.adobe/Flash_Player
4 ./.adobe/Flash_Player/AssetCache
4 ./.alkasir/log
4 ./.alkasir/torpt
4 ./.alkasir/torpt/ptc
4 ./.bundle/cache
4 ./.bundle/cache/compact_index
4 ./.cache/chromium/Default
4 ./.cache/deepin

要在特定位置查看最小的目录,例如/var,运行:

$sudo du -S /var | sort -n | head -10

要在当前工作目录中查看前十个最小文件,请运行:

$ls -lSr | head -10

示例输出:

total 116
-rw-r--r-- 1 sk users 62 Nov 5 12:15 Inter.txt
drwxr-xr-x 2 sk users 4096 Jan 9 2015 Wallpapers
drwxr-xr-x 5 sk users 4096 Nov 25 17:24 VirtualBox VMs
drwxr-xr-x 2 sk users 4096 Jan 11 2015 Videos
drwxr-xr-x 6 sk users 4096 Oct 24 17:32 usbkill
drwxr-xr-x 2 sk users 4096 Jan 11 2015 Templates
drwxr-xr-x 5 sk users 4096 Jan 4 2015 Soft_Backup
drwxr-xr-x 2 sk users 4096 Oct 25 12:32 snap
drwxr-xr-x 2 sk users 4096 Jan 11 2015 Public

同样,仅在特定目录中查看前十个最小文件,例如/var,刚刚运行:

$sudo ls -lSr /var | head -10