查找并删除目录中的所有核心文件

时间:2014-04-15 04:24:17

标签: c++ shell gdb

程序异常终止时会生成核心文件。当程序异常退出时,它包含系统的工作存储器。您可以将调试器与生成的核心文件一起使用来调试程序。挑战是:

  1. 从目录中删除所有核心文件(递归搜索)。核心文件的大小非常庞大,您可能希望删除它们以节省内存
  2. 确保不删除任何名为core的文件夹和其他一些名为core的文件夹,而不是实际的内存/系统转储

2 个答案:

答案 0 :(得分:1)

在互联网上进行一些搜索之后,我发现了一段很好的代码。缺点是它要求您识别核心文件以确保它不是其他名为core的文件。资料来源:http://csnbbs.com/

代码:

find . -name core\* -user $USER -type f -size +1000000c -exec file {} \; -exec ls -l {} \; -exec printf "\n\ny to remove this core file\n" \; -exec /bin/rm -i {} \;

如果您有更好的解决方案,请发布。

答案 1 :(得分:0)

要删除与正则表达式“*.core”匹配的所有文件,您可以使用:

find . -name "*.core" -type f  -delete

find 支持许多过滤器,例如:

<块引用>

-size +1000000c #size > 1G

-user $USER # 特定用户

-mtime +3 # 超过 3 天

如果你害怕以“core”结尾的文件不是核心文件,你可以通过file命令过滤到其他一些linux命令。例如 -

find . -name "*.core" -type f -exec file {} \; | grep 'core file' | awk -F":" '{print $1}' | xargs -n1 -P4 rm -rf