清理 $HOME 目录

清理 $HOME 目录

几年间,在我的$HOME目录中出现了很多隐藏的文件和目录。

我想不断地删除不需要的。

我如何找出哪些应用程序创建了这些隐藏文件和目录。

我如何确保删除隐藏文件和目录是安全的,并且不会丢失任何重要的内容,并且依赖于它们的任何内容都不会停止工作?

答案1

你可以暂时取代它们。

cd ~
mkdir .trash
find . ! -name . -prune ! -type d -atime +365 -exec \
    sh -c 'touch -a -- "$@"
           mv -- "$@" ~/.trash
    ' --   {} +

这将找到您$HOME目录中的所有文件 - 不会递归到子目录 - 这些文件已经一年没有被访问过。它将把所有这些的访问时间更新为现在,然后将它们全部移动到名为 的目录中.trash。如果您在运行它和决定开始删除旧文件之间遇到任何问题,~/.trash那么您可以尝试将其中一些文件移回原处,看看是否有任何您放入垃圾箱的文件是导致问题的原因。

答案2

如果您是系统的 root,则可以使用审计内核功能具有有关谁/何时/什么访问/创建/修改文件的最大信息。请参阅本教程以获取 Debian 风格的示例

如果没有 root 访问权限,您可以使用 crontab 或具有无限循环+睡眠的脚本来运行拉索夫& grep 文件在你的 homedir 中。请参阅 lsof 的联机帮助页。但是,它只会显示在启动 lsof 时打开了文件描述符的应用程序。如果应用程序打开一个文件,编辑它,然后关闭它,您将不会在 lsof 中看到此更改。

像这样的单行应该可以完成这项工作:lsof -u $(id -u) 2>/dev/null |grep -P $HOME'/[^\s]*$'

另一种方法是使用inotify 内核API检查文件何时被访问。唉,这是一个异步系统,你不会有“什么应用程序”、“具体时间”、“什么用户”等详细信息。您只会收到有关“此文件已修改/访问...”的回调。一些应用(Inotify、FAM、gamin)为您提供对 api 的简单访问

答案3

标识

我建议漂白位,一个交互式 GUI 程序,用于消除垃圾。您可以从发行版的存储库中安装它,也可以从扁平轮毂和来自漂白比特.org

截屏

迈克塞夫建议查找atime并删除长时间不使用的文件(前提是您没有将系统配置为不使用atime),但这相当冒险(看看tmpreaper您是否想这样做)。

相关内容