是否有办法将文件名写入文件,然后再删除它们以供稍后参考以检查已删除的内容。
find <PATH> -type f -name "<filePattern>" -mtime +1 -delete
答案 0 :(得分:21)
只需在-print
的调用中添加find
表达式:
find <PATH> -type f -name "<filePattern>" -mtime +1 -delete -print > log
我不确定这是否在文件取消关联之前或之后打印了名称,但它无关紧要。我怀疑-delete -print
在打印之前取消链接,而-print -delete
会在取消链接之前打印。
答案 1 :(得分:8)
就像威廉所说,你可以使用-print
。但是,您也可以使用-print > log
标记代替-fprint
。
你想要的东西是:
find <PATH> -type f -name "<filePattern>" -mtime +1 -fprint "<pathToLog>" -delete
例如,我在脚本中使用它:
find . -type d -name .~tmp~ -fprint /var/log/rsync-index-removal.log -delete
答案 2 :(得分:2)
您可以使用-exec
和rm -v
:
find <PATH> -type f -name "<filePattern>" -mtime +1 -exec rm -v {} \;
rm -v
会报告删除的内容。
答案 3 :(得分:0)
使用这样的东西,你可以在exec语句中执行多个命令,比如log to file,rm file,以及你需要的任何其他命令
find <PATH> -type f -name "<filePattern>" -mtime +1 -exec sh -c "echo {} >>mylog; rm -f {}" \;
答案 4 :(得分:0)
从名为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上为我工作