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 {} \;