有时,在Linux命令行工作时,您可能希望快速了解一组文件或完整目录的磁盘使用情况。 有一个特定的命令行工具,可以让你这样做,配合du 。 在本教程中,我们将讨论此工具的基础知识以及使用易于理解的示例提供的功能。
但在此之前,值得分享的是,这里提到的所有示例和说明都已在Ubuntu 16.04 LTS上进行了测试。
Linux du命令
这是du命令的语法:
du [OPTION]... [FILE]...
以下是该工具的手册页如何描述它:
du - estimate file space usage
Summarize disk usage of the set of FILEs, recursively for directories.
以下Q&A类型的例子应该让您更好地了解如何工作。
Q1。 如何使用du知道一个或多个文件的磁盘使用情况?
所以我们在说这个工具的基本用法,这很简单。 所有你需要做的是将相应的文件名作为输入传递给命令。
du [file1] [file2] ...
以下是一个例子:
因此,在输出中可以看到,第一列中显示的数字表示相应文件的磁盘使用情况。
您也可以为目录执行此操作:
在目录的情况下,输出显示子目录的磁盘使用情况以及父目录的整体。
Q2。 如何以人的可读形式显示使用信息?
在默认模式下运行du时的一个问题是,输出中生成的使用情况并不能清楚它所代表的内容。 例如,上一节所示屏幕截图中的输出不会说“4”和“8”是什么 - 它们是字节,千字节还是什么?
所以为了使输出更好,可以使用-h命令行选项:
du -h [file1] [file2] ...
以下是一个例子:
所以现在从输出清楚,磁盘使用率是以千字节为单位。
Q3。 如何对目录中的所有文件进行显示计数?
默认情况下,只要将目录名称作为输入传递给du,该工具仅显示输入目录和子目录(如果有)的使用情况信息。
但是,如果要求是单独显示所有文件的磁盘使用信息,那么可以使用-a命令行选项来执行此操作。 以下是此选项的示例:
Q4。 如何使du生产总共使用量?
这可以使用-c命令行选项来完成。 例如:
从上面的屏幕截图清楚,在输出底部添加了一行,显示了磁盘使用量的总和。
Q5。 如何使du显示inode信息而不是块使用?
为此,您需要使用--inode选项。 以下是此选项的屏幕截图:
Q6。 如何使du接受来自文件或STDIN的输入?
这可以使用--files0从命令行选项完成。 假设输入文件名被写入名为inp_list的文件中,那么可以使用以下方式使用du命令:
du --files0-from=inp_list
例如,以下是操作选项:
请记住,输入文件中输入的名称(在上述情况下为inp_list )应为NUL终止。 例如,我们的inp_list文件包含以下内容:
我们通过Vim这样做了。 要知道如何通过Vim来做这个,请到这里。
继续,您也可以接受来自STDIN的输入。 为此,您需要将连字符( - )作为值传递给--files0-from选项。 在这种情况下,在STDIN上输入每个文件名后,需要按Ctrl + d两次。
Q7。 如何使du从父目录大小排除子目录的大小?
在上面的Q1结尾,我们讨论了如何使用du来显示目录的磁盘使用情况。 输出显示,子目录的大小单独显示,父目录(输入中传入的条目)的条目显示了所有内容的组合大小。
如果您想要显示最后一个条目中子目录的父大小的大小,则可以使用-S命令行选项。
Q8。 如何使du显示输出的最后修改时间?
为此,请使用--time命令行选项。 以下是一个例子:
Q9。 如何使du排除特定类型的文件?
假设您的目录包含多种类型的文件,并且您希望du命令在计算目录的磁盘使用量时不包括其中一个或多个。 您可以使用--exclude选项来执行此操作,该选项需要一个模式作为输入。
du --exclude=PATTERN [Dir-name]
例如,以下屏幕截图显示了上述命令,用于.png文件。
Q10。 如何定义目录深度为du?
如果需要,还可以将du命令限制在特定的目录深度。 这样,该工具只会将遇到的目录的使用信息打印到用户指定的级别。 可以使用--max-depth选项访问该功能。
因此,如果要限制du到顶级目录,请将“0”作为值传递给此选项。
du --max-depth=0 [dir-name]
以下是此选项的一些示例:
结论
du是一个方便的小命令行工具,可能会在可能的情况下来抢救。 此外,这不难理解和使用。 我们在这里讨论了一些基本的命令行选项。 有关更多详细信息,请访问该工具的手册页 。