【发布时间】:2013-12-22 16:39:32
【问题描述】:
有没有办法在文件被删除之前将文件名写入文件以供日后参考以检查已删除的内容。
find <PATH> -type f -name "<filePattern>" -mtime +1 -delete
【问题讨论】:
标签: linux find command delete-file
有没有办法在文件被删除之前将文件名写入文件以供日后参考以检查已删除的内容。
find <PATH> -type f -name "<filePattern>" -mtime +1 -delete
【问题讨论】:
标签: linux find command delete-file
来自名为 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
在 CENTOS7 上为我工作
【讨论】:
就像威廉说的,你可以使用-print。但是,您也可以使用-fprint 标志来代替-print > log。
你想要这样的东西:
find <PATH> -type f -name "<filePattern>" -mtime +1 -fprint "<pathToLog>" -delete
例如,我在脚本中使用它:
find . -type d -name .~tmp~ -fprint /var/log/rsync-index-removal.log -delete
【讨论】:
通过这样的方式,您可以在 exec 语句中执行多个命令,例如日志到文件、rm 文件以及您需要的任何其他命令
find <PATH> -type f -name "<filePattern>" -mtime +1 -exec sh -c "echo {} >>mylog; rm -f {}" \;
【讨论】:
只需将-print 表达式添加到find 的调用中:
find <PATH> -type f -name "<filePattern>" -mtime +1 -delete -print > log
我不确定这是否会在文件取消链接之前或之后打印名称,但这无关紧要。我怀疑-delete -print 在打印之前取消链接,而-print -delete 将在取消链接之前打印。
【讨论】:
您可以使用-exec 和rm -v:
find <PATH> -type f -name "<filePattern>" -mtime +1 -exec rm -v {} \;
rm -v 将报告它正在删除的内容。
【讨论】: