判断文件是否是“稀疏文件”

判断文件是否是“稀疏文件”

有一个现有的问题“查找所有稀疏文件”,我想我可以使用它,但脚本太复杂,难以理解。我不认为 Ubuntu 文件管理器的 GUI 提供了一种方法来了解文件是否稀疏。怎样说呢?

文件系统是EXT4。

答案1

接受的答案是一句话:

# find / -type f -printf "%S\t%p\n" | gawk '$1 < 1.0 {print}'

所以这有很多部分。让我们来分解一下:

find / -type f

这部分将搜索机器上的所有文件

-printf "%S\t\%p\n"

这部分将打印出文件的“稀疏性”和完整的文件名。

因此,此时的输出将类似于以下格式的条目列表:

1.23456 /tmp/a/file

如果第一个数字小于 1.0,则该文件被视为“稀疏”。

那么我们可以通过 awk 过滤它:

gawk '$1 < 1.0 {print}'

这将通过仅报告第一个数字 < 1.0 的行来将输出限制为稀疏行

结果是所有稀疏文件及其“稀疏性”的列表。

对于一个简单的命令来说这是很多工作!

如果您只想测试特定文件是否稀疏,那么您可以使用它的变体。例如

find file_to_test -printf "%S"

将返回一个数字。可以测试为 < 1.0

答案2

您想在终端上检查吗?

find FILENAME -type f ! -size 0 -printf '%S\n'

如果它打印的内容小于 1,则它是一个稀疏文件。

相关内容