如何删除linux中代码文件中未使用的文件?

时间:2015-06-27 21:34:54

标签: linux grep find rm

我正在运行Fedora 18 linux,我有一个PHP项目,我已经工作了一段时间。我正在尝试清理Web应用程序的生产部署。我有一个图标图像文件夹,随着时间的推移已经收集了我的代码中不再使用的文件,因为我在代码中更改为不同的图标,或者图像文件用于创建其他图标。我要做的是制作整个代码项目的备份副本,并在命令行上使用functionalfindrm的组合,希望扫描整个文件夹如果图像没有在我的代码文件中的任何地方使用,请删除它们。我在网上做了一些搜索,我发现在文件中找到一行文本并将其删除的东西,但是我找不到任何与我想做的事情相似的东西。

感谢任何帮助...

2 个答案:

答案 0 :(得分:1)

所以这就是我想出来的。我整理了一个shell脚本来完成我需要的东西。为了那些偶然发现这一点的人的利益,以及那些想要批评我的解决方案的人,这就是它。我选择跳过在.xcf文件中找到的文件,因为这些文件仅用于创建许多图标文件,而某些.png图像会用于这些.xcf文件。

#!/bin/bash
FILES=/var/www/html/support_desk/templates/default/images/icons/*
codedir=/var/www/html/support_desk_branch/

for f in $FILES
do
  bn=$(basename $f)

  ext="${bn##*.}"

  echo "Processing $bn file..."

  if ! fgrep --quiet -R $bn $codedir; then
    if [ ext != 'xcf' ]; then
      rm $f
    fi
  fi

done

现在我只有PHP脚本文件中使用的图像文件。为了不错过菜单中使用的任何图标文件,这是在mysql数据库的表中定义的,我创建了该表的数据的sql转储文件,并将其放在应用程序文件的路径中在运行shell脚本之前。

答案 1 :(得分:0)

查找未使用的图标文件的最简单方法是构建整个项目,然后查看图标文件的访问时间。最近没有读过的那些(当然包括grep)会很容易出现。

例如,假设您在一小时前进行了备份,并在十分钟前完成了构建 - 访问时间将是不同的。然后

find . -amin +15 -type f

应该提供一个很好的“未使用”文件列表。如果您确定列表(您确实进行了备份,对吗?)那么您可以清除未使用的文件:

find . -amin +15 -type f -exec rm -i {} \;

如果您确实 ,则可以删除-i选项。