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)
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)
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)
如果未指定要搜索的文件,则使用当前目录(.).
PYK*_*PYK 15
您可以使用该命令find
执行此操作.我们可以匹配文件-type f
,并使用匹配空文件-size 0
.然后我们可以删除匹配-delete
.
find . -type f -size 0 -delete
Run Code Online (Sandbox Code Playgroud)
在 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。
这适用于普通 BSD,因此它应该与所有风格普遍兼容。下面。例如在pwd
( .
)
find . -size 0 | xargs rm
Run Code Online (Sandbox Code Playgroud)