Linux删除大小为0的文件

发布于 2024-10-27 03:58:55 字数 152 浏览 9 评论 0原文

如果Linux中的某个文件大小为0,如何删除该文件。我想在crontab中执行此操作,而不需要任何额外的脚本。

l filename.file | grep 5th-tab | not eq 0 | rm

像这样的东西吗?

How do I delete a certain file in linux if its size is 0. I want to execute this in an crontab without any extra script.

l filename.file | grep 5th-tab | not eq 0 | rm

Something like this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

不念旧人 2024-11-03 03:58:55

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

find {directory_location} -size 0 -print -delete

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

if [ ! -s /tmp/foo ] ; then
  rm /tmp/foo
fi

This will delete all the files in a directory (and below) that are size zero.

find {directory_location} -size 0 -print -delete

If you just want a particular file;

if [ ! -s /tmp/foo ] ; then
  rm /tmp/foo
fi
蝶…霜飞 2024-11-03 03:58:55

您需要使用查找

 find . -size 0 -delete

you would want to use find:

 find . -size 0 -delete
瑾兮 2024-11-03 03:58:55

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

find . -type f -empty -delete

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


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

find -type f -empty -delete

来自 GNU 查找文档

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

To search and delete empty files in the current directory and subdirectories:

find . -type f -empty -delete

-type f is necessary because also directories are marked to be of size zero.


The dot . (current directory) is the starting search directory. If you have GNU find (e.g. not Mac OS), you can omit it in this case:

find -type f -empty -delete

From GNU find documentation:

If no files to search are specified, the current directory (.) is used.

情愿 2024-11-03 03:58:55

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

find . -type f -size 0 -delete

You can use the command find to do this. We can match files with -type f, and match empty files using -size 0. Then we can delete the matches with -delete.

find . -type f -size 0 -delete
狂之美人 2024-11-03 03:58:55

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

(( $(stat -c %s "$filename") )) || rm "$filename"

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

On Linux, the stat(1) command is useful when you don't need find(1):

(( $(stat -c %s "$filename") )) || rm "$filename"

The stat command here allows us just to get the file size, that's the -c %s (see the man pages for other formats). I am running the stat program and capturing its output, that's the $( ). This output is seen numerically, that's the outer (( )). If zero is given for the size, that is FALSE, so the second part of the OR is executed. Non-zero (non-empty file) will be TRUE, so the rm will not be executed.

握住我的手 2024-11-03 03:58:55

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

find . -size 0 |  xargs rm

This works for plain BSD so it should be universally compatible with all flavors. Below.e.g in pwd ( . )

find . -size 0 |  xargs rm
青萝楚歌 2024-11-03 03:58:55

对于非递归删除(使用 du 和 awk):

rm `du * | awk '$1 == "0" {print $2}'`

For a non-recursive delete (using du and awk):

rm `du * | awk '$1 == "0" {print $2}'`
烟─花易冷 2024-11-03 03:58:55
find . -type f -empty -exec rm -f {} \;
find . -type f -empty -exec rm -f {} \;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文