【问题标题】:How can I list the files in a directory that have zero size/length in the Linux terminal?如何在 Linux 终端中列出大小/长度为零的目录中的文件?
【发布时间】:2022-01-05 10:43:22
【问题描述】:
我刚开始使用 Linux 终端,所以我才刚刚开始了解我可以使用的命令。我已经弄清楚如何使用 Linux 终端列出目录中的文件,以及如何根据文件大小列出它们。我想知道是否有办法只列出特定文件大小的文件。现在,我正在尝试列出大小为零的文件,例如您可能使用touch 命令创建的文件。我查看了我在使用 ls 时可以使用的标志,但我找不到我正在寻找的确切内容。这是我现在拥有的:
ls -lsh /mydirectory
“mydirectory”部分只是一个占位符。有什么我可以添加的,只会列出大小为零的文件吗?
【问题讨论】:
标签:
linux
list
terminal
directory
ls
【解决方案1】:
有几种方法可以解决这个问题;如果您想坚持使用ls -l,您可以使用例如awk 在管道中进行过滤。
ls -lsh /mydirectory | awk '$5 == 0'
这里,$5 是ls 输出中的第五个字段,即大小。
另一种方法是使用不同的工具,find。
find /mydirectory -maxdepth 1 -size 0 -ls
这也会列出隐藏文件,类似于ls -la。
-maxdepth 1 在那里,因此如果您有嵌套目录,它就不会遍历目录树。
【解决方案2】:
一个简单的脚本就可以做到这一点。
for file_name in *
do
if [[ !( -s $file_name ) ]]
then
echo $file_name
fi
done
解释:
for 是一个循环。 * 给出当前目录中所有文件的列表。
-s file_name 如果文件的大小大于 0,则为真。
!否定它