本文是Linux Shell系列教程的第(十六)篇,更多Linux Shell教程请看:Linux Shell系列教程 Shell中的输出和输入的重定向是在使用中经常用到的一个功能,非常实用,今天就为大家介绍下Shell输入输出重定向的相关知识。 一、Shell输入输出重定向概述 在了解重定向相关知识之前,我们先来看看Linux的文件描述符。 Linux的文件描述符可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作。 用户可以自定义文件描述符范围是:3-max,max跟用户的ulimit…
Linux使用find / du递归查找目录中的最大文件, ncdu, 磁盘空间查看命令(du,df)剩余空间查看详解, Linux find largest file in directory recursively using find/du
我的Linux服务器上安装了500GB SSD。我的Web服务器磁盘空间不足。我需要在磁盘上找到有关文件大小的最大或最大文件。如何使用find命令递归查找目录中的最大文件?
如果您知道如何使用find,du和其他命令,要在磁盘上查找有关文件大小的大文件是一件容易的事。du命令用于估计Linux系统上的文件空间使用情况。du的输出使用shell管道传递给sort和head命令。让我们看看如何使用各种命令在Linux服务器中找到最大的文件。
Linux使用find递归查找目录中的最大文件
在Linux中查找包括目录在内的最大文件的过程如下:
- 打开终端应用程序
- 使用该sudo -i命令以root用户身份登录
- 类型 du -a /dir/ | sort -n -r | head -n 20
- du将估计文件空间使用情况
- sort将整理du命令的输出
- head将只显示/ dir /中最大的20个文件
Linux找到最大的文件/
运行命令:
$ sudo du -a /dir/ | sort -n -r | head -n 20
OR
$ sudo du -a / 2>/dev/null | sort -n -r | head -n 20

或者:
# 只查找第一级目录 du -h --max-depth=1 /var
Linux使用bash别名快速查找大文件
人们可以使用ducks bash shell别名搜索磁盘空间
## shell别名## alias ducks = 'du -cks * | sort -rn | head' ###运行它### ducks
使用find在Linux bash shell上递归查找最大文件
只能使用find命令列出文件并跳过目录,而不是使用du命令,sort命令和NA命令组合:示例输出:
$ 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
大!我找到了磁盘上最大的文件。下一步是什么?>
根据文件/目录类型,您可以移动或删除文件。例如,您无法删除或移动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/
结论
您刚学会了如何使用du / find和其他命令的组合在Linux中搜索,查找和列出最大或最大的目录/文件。有关更多信息,请参阅du和find命令的此页面或手册页:
man du man find man sort man head man tail
另一个可以帮助您找出占用空间的选项是ncdu
安装它:
sudo apt-get install ncdu

Linux 查看磁盘空间
df
df 以磁盘分区为单位查看文件系统,可以获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
例如,我们使用df -h命令来查看磁盘信息, -h 选项为根据大小适当显示:

显示内容参数说明:
- Filesystem:文件系统
- Size: 分区大小
- Used: 已使用容量
- Avail: 还可以使用的容量
- Use%: 已用百分比
- Mounted on: 挂载点
相关命令:
- df -hl:查看磁盘剩余空间
- df -h:查看每个根路径的分区大小
- du -sh [目录名]:返回该目录的大小
- du -sm [文件夹]:返回该文件夹总M数
- du -h [目录名]:查看指定文件夹下的所有文件大小(包含子文件夹)
du
du 的英文原义为 disk usage,含义为显示磁盘空间的使用情况,用于查看当前目录的总大小。
例如查看当前目录的大小:
# du -sh 605M .
显示指定文件所占空间:
# du log2012.log 300 log2012.log
方便阅读的格式显示test目录所占空间情况:
# du -h test 608K test/test6 308K test/test4 4.0K test/scf/lib 4.0K test/scf/service/deploy/product 4.0K test/scf/service/deploy/info 12K test/scf/service/deploy 16K test/scf/service 4.0K test/scf/doc 4.0K test/scf/bin 32K test/scf 8.0K test/test3 1.3M test
du 命令用于查看当前目录的总大小:
- -s:对每个Names参数只给出占用的数据块总数。
- -a:递归地显示指定目录中各文件及子目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。
- -b:以字节为单位列出磁盘空间使用情况(系统默认以k字节为单位)。
- -k:以1024字节为单位列出磁盘空间使用情况。
- -c:最后再加上一个总计(系统默认设置)。
- -l:计算所有的文件大小,对硬链接文件,则计算多次。
- -x:跳过在不同文件系统上的目录不予统计。
- -h:以K,M,G为单位,提高信息的可读性。