Linux删除大小为0的文件

Fra*_*fka 152 linux filesystems ls rm delete-file

如果它的大小为0,我如何在linux中删除某个文件.我想在crontab中执行它而不需要任何额外的脚本.

l filename.file | grep 5th-tab | not eq 0 | rm
Run Code Online (Sandbox Code Playgroud)

像这样的东西?

Jam*_*.Xu 252

你想要使用find:

 find . -size 0 -delete
Run Code Online (Sandbox Code Playgroud)

  • 我会添加"-type f",因​​为目录也标记为大小为零."点"是可选的. (37认同)
  • @lilydjwg确切地说,如果我们被允许使用非POSIX标志,`find.-empty -delete`是最酷的.:-) (10认同)
  • 有一个`-empty`选项:-) (8认同)
  • "dot"对于Linux是可选的,但对于Mac OS不是可选的 (6认同)
  • 您可以为当前文件夹添加“-maxdepth 1”。 (2认同)

Pau*_*lin 210

这将删除大小为零的目录(及以下)中的所有文件.

find /tmp -size  0 -print0 |xargs -0 rm --
Run Code Online (Sandbox Code Playgroud)

如果你只想要一个特定的文件;

if [ ! -s /tmp/foo ] ; then
  rm /tmp/foo
fi
Run Code Online (Sandbox Code Playgroud)

  • @Frank,你对'xargs`不正确.'-print0`和`xargs -0`校正了空格. (11认同)
  • 快捷方式:`[ - s/tmp/foo] || rm/tmp/foo`(测试大小是否为零,否则删除).另请注意,如果文件/目录名称包含空格,则`xargs`是不安全的; `find ... -exec rm'{}'\;`在这种情况下是安全的. (7认同)
  • `rm --`(注意尾随的` - 字符)比简单的`rm`更安全,以防止流氓文件名?http://serverfault.com/questions/337082/how-do-i-prevent-accidental-rm-rf (5认同)
  • @SimonBaars`find/tmp -size 0 -print0 | xargs -0 echo rm` (2认同)

Ant*_*nio 114

要搜索和删除当前目录和子目录中的空文件:

find . -type f -empty -delete
Run Code Online (Sandbox Code Playgroud)

-type f 是必要的,因为目录也被标记为大小为零.


.(当前目录)是起始搜索目录.如果你有GNU查找(例如不是Mac OS),你可以在这种情况下省略它:

find -type f -empty -delete
Run Code Online (Sandbox Code Playgroud)

GNU find文档:

如果未指定要搜索的文件,则使用当前目录(.).

  • 我将添加-name'* .SomeFileExtension'例如:如果您只想删除文本文件,则可以使用:`find'。-name'* .txt'-type f -empty -delete` (2认同)
  • 在包含 220 万个文件的目录上运行此命令后,不得不喝杯咖啡。:P 当我回来时,效果非常好,还剩 350.000。谢谢! (2认同)

PYK*_*PYK 15

您可以使用该命令find执行此操作.我们可以匹配文件-type f,并使用匹配空文件-size 0.然后我们可以删除匹配-delete.

find . -type f -size 0 -delete
Run Code Online (Sandbox Code Playgroud)


cda*_*rke 5

在 Linux 上,stat(1) 命令在您不需要 find(1) 时很有用:

(( $(stat -c %s "$filename") )) || rm "$filename"
Run Code Online (Sandbox Code Playgroud)

这里的 stat 命令只允许我们获取文件大小,即-c %s(其他格式请参见手册页)。我正在运行 stat 程序并捕获其输出,即$( ). 此输出以数字形式显示,即外部(( )). 如果大小为零,则为 FALSE,因此执行 OR 的第二部分。非零(非空文件)将为 TRUE,因此不会执行 rm。


use*_*594 5

这适用于普通 BSD,因此它应该与所有风格普遍兼容。下面。例如在pwd( .)

find . -size 0 |  xargs rm
Run Code Online (Sandbox Code Playgroud)