删除空文件并保存已删除文件的列表

cri*_*061 1 bash shell gnu-findutils

我需要一个脚本来删除所有空文件并将已删除文件的列表写入文本文件。

删除文件有效。不幸的是,该列表不起作用。

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

我尝试过这样的事情:

-print >> test.txt
Run Code Online (Sandbox Code Playgroud)

joa*_*nis 5

当我将命令的输出重定向到 中的文件时.,它会在写入任何内容之前被 find 命令删除,因为它是空的。

要解决此问题,请确保输出文件一开始不为空,或将其保存在其他位置:

find . -type f -empty -print -delete > ../log
Run Code Online (Sandbox Code Playgroud)

或者

date > log
find . -type f -empty -print -delete >> log
Run Code Online (Sandbox Code Playgroud)

或者,改编自@DanielFarrell 的评论:

find . -type f -empty -a -not -wholename ./log  -print -delete > log
Run Code Online (Sandbox Code Playgroud)

添加的排除项-a -not -wholename ./log./log包含在查找操作中。