如果一个文件在linux中大小为0,我该如何删除它。我想在crontab中执行此操作,而不需要任何额外的脚本。
l filename.file | grep 5th-tab | not eq 0 | rm
像这样吗?
如果一个文件在linux中大小为0,我该如何删除它。我想在crontab中执行此操作,而不需要任何额外的脚本。
l filename.file | grep 5th-tab | not eq 0 | rm
像这样吗?
这将删除目录中(包括子目录)所有大小为零的文件。
find /tmp -size 0 -print -delete
如果你只想获取特定的文件;
if [ ! -s /tmp/foo ] ; then
rm /tmp/foo
fi
你会想要使用find命令:
find . -size 0 -delete
-empty
选项 :-) - lilydjwgfind . -empty -delete
是最酷的。 :-) - Anne van Rossum搜索并删除当前目录和子目录中的空文件:
find . -type f -empty -delete
-type f
是必需的,因为即使目录也被标记为零大小。
点号.
(当前目录)是起始搜索目录。如果你使用GNU find(例如不是Mac OS),则可以在这种情况下省略它:
find -type f -empty -delete
根据GNU find
文档:
如果没有指定要搜索的文件,则使用当前目录(.)。
find . -name '*.txt' -type f -empty -delete
。 - jspekfind
来实现这个功能。我们可以使用-type f
来匹配文件,并使用-size 0
来匹配空文件。然后,我们可以使用-delete
删除匹配项。find . -type f -size 0 -delete
(( $(stat -c %s "$filename") )) || rm "$filename"
这里的stat命令使我们仅获取文件大小,即-c %s
(有关其他格式,请参见man页面)。我正在运行stat程序并捕获其输出,即$( )
。此输出以数字形式显示,即外部(( ))
。如果文件大小为零,则为FALSE,因此执行OR的第二部分。非零(非空文件)为TRUE,因此不会执行rm操作。
pwd
(.
)中。find . -size 0 | xargs rm
-delete
选项吗?https://www.freebsd.org/cgi/man.cgi?find(1) - Antoniorm `du * | awk '$1 == "0" {print $2}'`
find . -type f -empty -exec rm -f {} \;
[ -s /tmp/foo ] || rm /tmp/foo
(测试大小是否为零,否则删除)。另外要注意,如果文件/目录名包含空格,则使用xargs
是不安全的; 在这种情况下,使用find ... -exec rm '{}' \;
是安全的。 - FrankH.xargs
的理解是错误的。使用-print0
和xargs -0
可以纠正空格的问题。 - Paul Tomblinfind -exec
,在可以使用+
的情况下也应始终优先选择它而不是;
(这就是这种情况之一)。 - C. K. Youngrm --
(注意尾部的“--”字符)比仅使用rm
更安全,以防止不良文件名的出现。 - OnlineCopfind /tmp -size 0 -print0 |xargs -0 echo rm
- Paul Tomblin