Linux查找和删除文件,但重定向要删除的文件名

Linux查找和删除文件,但重定向要删除的文件名,linux,find,command,delete-file,Linux,Find,Command,Delete File,是否有一种方法可以在删除文件之前将文件名写入文件,以供日后检查已删除的内容时参考 find <PATH> -type f -name "<filePattern>" -mtime +1 -delete find-type f-name”“-mtime+1-delete 您可以使用-exec和rm-v: find <PATH> -type f -name "<filePattern>" -mtime +1 -exec rm -v {} \; f

是否有一种方法可以在删除文件之前将文件名写入文件,以供日后检查已删除的内容时参考

find <PATH> -type f -name "<filePattern>" -mtime +1 -delete 
find-type f-name”“-mtime+1-delete

您可以使用
-exec
rm-v

find <PATH> -type f -name "<filePattern>" -mtime +1 -exec rm -v {} \;
find-type f-name”“-mtime+1-execrm-v{}\;

rm-v
将报告它正在删除的内容。

只需在调用
find
时添加一个
-print
表达式即可:

find <PATH> -type f -name "<filePattern>" -mtime +1 -delete -print > log
find-type f-name”“-mtime+1-delete-print>log

我不确定这是在文件解除链接之前还是之后打印名称,但这不重要。我怀疑
-delete-print
会在打印之前取消链接,而
-print-delete
会在取消链接之前进行打印。

通过类似的方式,您可以在exec语句中执行多个命令,如log to file、rm file以及您需要的其他命令

find <PATH> -type f -name "<filePattern>" -mtime +1 -exec sh -c "echo {} >>mylog; rm -f {}" \;
find-type f-name”“-mtime+1-exec sh-c“echo{}>>mylog;rm-f{}”;

正如威廉所说,您可以使用
-print
。但是,您也可以使用
-fprint
标志,而不是
-print>log

您可能需要以下内容:

find <PATH> -type f -name "<filePattern>" -mtime +1 -fprint "<pathToLog>" -delete

来自名为
removelogs.sh的shell脚本
在终端中运行命令
sh removelogs.sh

这是removelogs.sh文件中的文本

cd /var/log;
date >> /var/log/removedlogs.txt;
find . -maxdepth 4 -type f -name \*log.old -delete -print >> /var/log/removedlogs.txt
  • .-要在此位置运行!!!因此,请确保您不在根文件夹中运行此文件
  • -maxdepth-防止其失控
  • -键入-确保仅键入文件
  • -名称-确保仅过滤您的名称
  • -打印-将结果发送到标准输出
  • -删除-删除所述文件
  • >>-附加到文件不覆盖>创建新文件

在CENTOS7上为我工作

fprint覆盖文件;附加到文件不是更好吗???我看过手册,但对我来说太复杂了。
cd /var/log;
date >> /var/log/removedlogs.txt;
find . -maxdepth 4 -type f -name \*log.old -delete -print >> /var/log/removedlogs.txt