Linux 使用 find/du 递归查找目录中的最大文件
如果您知道如何使用 find、du 和其他命令,那么查找磁盘上文件大小较大的文件就很容易了。du 命令用于估计 Linux 系统上的文件空间使用情况。du 的输出使用 shell 管道传递给 sort 和 head 命令。让我们看看如何使用各种命令查找 Linux 服务器中最大的文件。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 不 |
要求 | Linux 终端 |
类别 | 文件管理 |
操作系统兼容性 | Alma • Alpine • Arch • Debian • Fedora • Linux • Mint • openSUSE • Pop!_OS • RHEL • Rocky • Stream • SUSE • Ubuntu • WSL |
预计阅读时间 | 6 分钟 |
Linux 使用 find 递归查找目录中的最大文件
在Linux中查找最大文件(包括目录)的过程如下:
- 打开终端应用程序
- sudo -i使用命令以 root 用户身份登录
- 类型du -a /dir/ | sort -n -r | head -n 20
- du 将估算文件空间使用情况
- sort 将对 du 命令的输出进行排序
- head 只会显示 /dir/ 中最大的 20 个文件
- 还要检查ncdu 命令以获取目录中最大的文件
Linux 查找 / 中最大的文件
运行命令:
$ sudo du -a /dir/ | sort -n -r | head -n 20
或者传递给 du 命令的
$ sudo du -a / 2>/dev/null | sort -n -r | head -n 20
选项-a用于写入所有文件的计数,而不仅仅是目录。
Linux 使用 bash 别名快速查找大文件
可以使用 ducks bash shell 别名来追踪占用大量磁盘空间的进程
## shell alias ## alias ducks='du -cks * | sort -rn | head' ### run it ### ducks
如何在 Linux / UNIX / BSD 上查找最大的前 10 个文件和目录
使用 find 在 Linux bash shell 上递归查找最大文件
我们只能使用 find 命令列出文件并跳过目录,而不能使用 du 命令、sort 命令和 head 命令组合:
以下是我在系统上得到的结果:
$ sudo find / -type f -printf "%s\t%p\n" | sort -n | tail -1
$ find $HOME -type f -printf '%s %p\n' | sort -nr | head -10
295599646 /home/vivek/backups/lnxpcs-master.zip 302654548 /home/vivek/backups/books/pdfs/unit443.wmv 313499710 /home/vivek/backups/books/pdfs/magzine.rar 340414464 /home/vivek/.local/share/baloo/index 346359808 /home/vivek/isoimages/VMware-VMvisor-Installer-6.7.0-8169922.x86_64.iso 352256000 /home/vivek/install63.iso 830054400 /home/vivek/linux/linux-4.18.8.tar 1014864333 /home/vivek/backups/corpapp/vsnl_9.5.2_E_21_Linux.tar.gz 1216380038 /home/vivek/backups/books/full.edition.tar.gz 1787822080 /home/vivek/Fedora-Workstation-Live-x86_64-28-1.1.iso
其中,find 命令选项如下:
- $HOME– 目录搜索文件。
- -type f– 仅搜索常规文件。
- -printf '%s %p\n'– 强制 find 在屏幕上使用打印格式,解释\转义符和%指令。%s将打印文件的大小(以字节为单位)。使用 显示文件名%p。此专用输出使使用 sort 命令对文件名进行排序变得容易。
是-n数字排序,-r传递给sort的将反转比较结果。head命令用于控制和显示文件的第一部分。换句话说,只显示前面命令的前10个结果。
太棒了!我找到了磁盘上最大的文件。下一步做什么?
根据文件/目录类型,您可以移动或删除文件。例如,您不能删除或移动 Linux 内核或驱动程序目录。要在 Linux 上删除不需要的文件,请使用 rm 命令:
$ rm -i -v /path/to/file
要以递归方式删除所有文件及其子目录,请使用以下命令:
$ rm -rf /path/to/folderName
要将文件移动到安装在 /mnt/usb/ 上的 USB 笔,请运行mv 命令:
$ mv /path/to/large/file/ /mnt/usb/
Baobab – 用于分析 GNOME 磁盘使用情况的图形工具
Baobab 可以扫描特定目录(本地和远程)或设备,为用户提供树状表示,包括分支中每个目录的大小或百分比。它还会自动检测任何已安装/未安装的 Linux 设备。还为任何选定的文件夹提供图形表示。它是 GNOME 的一部分。您所要做的就是输入
$ baobab
您可以声明要扫描的目录名称并定位文件/文件夹:
$ baobab /path/to/dir
$ baobab /home/vivek/Projects/
猴面包树在生长(点击放大)
关于 qdirstat Linux GUI 工具查找最大文件的说明
QDirStat 是一个图形应用程序 (GUI) 工具,用于显示 Linux 或 Unix 磁盘空间的去向并帮助您清理。您可以根据您的 Linux 发行版安装它。对于 Debian 和 Ubuntu Linux,请尝试apt 命令/ apt-get 命令,如下所示:
$ sudo apt install qdirstat
输出:
[sudo] password for vivek: Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: qdirstat 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 592 kB of archives. After this operation, 1,818 kB of additional disk space will be used. Get:1 http://in.archive.ubuntu.com/ubuntu focal/universe amd64 qdirstat amd64 1.6.1-1 [592 kB] Fetched 592 kB in 2s (261 kB/s) Selecting previously unselected package qdirstat. (Reading database ... 271375 files and directories currently installed.) Preparing to unpack .../qdirstat_1.6.1-1_amd64.deb ... Unpacking qdirstat (1.6.1-1) ... Setting up qdirstat (1.6.1-1) ... Processing triggers for mime-support (3.64ubuntu1) ... Processing triggers for hicolor-icon-theme (0.17-2) ... Processing triggers for gnome-menus (3.36.0-1ubuntu1) ... Processing triggers for man-db (2.9.1-1) ... Processing triggers for desktop-file-utils (0.24-1ubuntu3) ...
你正在使用 Fedora Linux 桌面吗?尝试使用yum 命令或 [nixcm name=”dnf”] 安装 QDirStat:
$ sudo dnf install qdirstat
接下来,按如下方式启动 qdirstat:
$ qdirstat &
## OR ##
$ qdirstat /path/to/dir/
$ qdirstat /usr/lib
用于查找最大文件或目录的 Linux GUI 实用程序(点击放大)
结论
您刚刚学习了如何使用 du/find 和其他命令的组合来搜索、查找和列出 Linux 中最大或最大的目录/文件。有关更多信息,请参阅此页面或使用 man 命令/help 命令的 du 和 find 命令的手册页
$ man du
$ man find
$ man sort
$ man head
$ man tail