Linux删除大小为0的文件
我如何删除Linux中的某个文件,如果它的大小为0.我想在没有任何额外的脚本的crontab中执行此操作。
l filename.file | grep 5th-tab | not eq 0 | rm
像这样的东西?
这将删除目录(和下面)中大小为零的所有文件。
find /tmp -size 0 -print0 |xargs -0 rm
如果你只是想要一个特定的文件;
if [ ! -s /tmp/foo ] ; then rm /tmp/foo fi
你会想使用find :
find . -size 0 -delete
search和删除当前目录和子目录中的空文件:
find . -type f -empty -delete
-type f
是必须的,因为还将目录标记为大小为零。
点.
(当前目录)是开始的search目录。 如果你有GNU find(例如不是Mac OS),你可以在这种情况下省略它:
find -type f -empty -delete
从GNU find
文档 :
如果没有指定要search的文件,则使用当前目录(。)。
你可以使用命令find
来做到这一点。 我们可以使用-type f
来匹配文件,并使用-size 0
来匹配空文件。 然后我们可以用-delete
删除匹配。
find . -type f -size 0 -delete
这适用于普通的BSD,所以它应该与所有的口味通用兼容。 在pwd
( .
)中的below.eg
find . -size 0 | xargs rm
在Linux上,当您不需要find(1)时,stat(1)命令很有用:
(( $(stat -c %s "$filename") )) || rm "$filename"
这里的stat命令允许我们获取文件大小,即-c %s
(请参阅其他格式的手册页)。 我正在运行stat程序并捕获它的输出,那就是$( )
。 这个输出用数字表示,就是外(( ))
。 如果大小为零,那就是FALSE,所以执行OR的第二部分。 非零(非空文件)将是TRUE,所以rm将不会被执行。
对于非recursion删除(使用du和awk):
rm `du * | awk '$1 == "0" {print $2}'`
find . -type f -empty -exec rm -f {} \;