【发布时间】:2011-07-25 10:58:43
【问题描述】:
如果某个文件的大小为 0,我如何在 linux 中删除它。我想在 crontab 中执行此操作,而不需要任何额外的脚本。
l filename.file | grep 5th-tab | not eq 0 | rm
这样的?
【问题讨论】:
标签: linux filesystems delete-file ls rm
如果某个文件的大小为 0,我如何在 linux 中删除它。我想在 crontab 中执行此操作,而不需要任何额外的脚本。
l filename.file | grep 5th-tab | not eq 0 | rm
这样的?
【问题讨论】:
标签: linux filesystems delete-file ls rm
这将删除目录(及以下)中大小为零的所有文件。
find /tmp -size 0 -print -delete
如果你只想要一个特定的文件;
if [ ! -s /tmp/foo ] ; then
rm /tmp/foo
fi
【讨论】:
[ -s /tmp/foo ] || rm /tmp/foo(测试大小是否为零,否则删除)。另请注意,如果文件/目录名称包含空格,xargs 是不安全的; find ... -exec rm '{}' \; 在这种情况下是安全的。
xargs 的看法不正确。 '-print0` 和 xargs -0 更正了空格。
find -exec,在可能的情况下,总是偏爱+ 而不是;(这是一种情况)。
rm --(注意尾随的-- 字符)是否比简单的rm 更安全? serverfault.com/questions/337082/…
find /tmp -size 0 -print0 |xargs -0 echo rm
你会想使用find:
find . -size 0 -delete
【讨论】:
-empty 选项:-)
find . -empty -delete 是最酷的。 :-)
-maxdepth 1。
在当前目录和子目录中查找和删除空文件:
find . -type f -empty -delete
-type f 是必需的,因为目录也被标记为大小为零。
点.(当前目录)是起始搜索目录。如果你有 GNU find(例如不是 Mac OS),你可以在这种情况下省略它:
find -type f -empty -delete
如果没有指定要搜索的文件,则使用当前目录 (.)。
【讨论】:
find . -name '*.txt' -type f -empty -delete
您可以使用命令find 来执行此操作。我们可以用-type f匹配文件,用-size 0匹配空文件。然后我们可以删除-delete的匹配项。
find . -type f -size 0 -delete
【讨论】:
在 Linux 上,当您不需要 find(1) 时,stat(1) 命令很有用:
(( $(stat -c %s "$filename") )) || rm "$filename"
这里的 stat 命令只允许我们获取文件大小,即-c %s(其他格式请参见手册页)。我正在运行 stat 程序并捕获它的输出,即$( )。此输出以数字形式显示,即外部(( ))。如果给定大小为零,即 FALSE,则执行 OR 的第二部分。非零(非空文件)为TRUE,所以不会执行rm。
【讨论】:
这适用于普通的 BSD,因此它应该与所有风格普遍兼容。下面,例如 pwd ( . )
find . -size 0 | xargs rm
【讨论】:
-delete 选项吗? freebsd.org/cgi/man.cgi?find(1)
对于非递归删除(使用 du 和 awk):
rm `du * | awk '$1 == "0" {print $2}'`
【讨论】:
find . -type f -empty -exec rm -f {} \;
【讨论】: