1

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

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

find . -type f -empty -print -delete

我试过这样的事情:

-print >> test.txt
4

2 回答 2

5

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

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

find . -type f -empty -print -delete > ../log

或者

date > log
find . -type f -empty -print -delete >> log

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

find . -type f -empty -a -not -wholename ./log  -print -delete > log

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

于 2022-01-18T21:27:27.957 回答
2

您可以将 -exec 选项与 rm 命令一起使用,而不是 -delete。

find . -type f -emtpy -exec rm --verbose {} \; >> logfile.txt

日志文件.txt:

removed './emptyfile1'
removed './emptyfile0'

或者您可以使用管道和 xargs 获得更干净的输出:

find . -type f -empty | xargs ls | tee -a logfile.txt | xargs rm

这只会给你删除的文件名。

于 2022-01-22T20:45:08.337 回答