通过命令行查找和删除未使用的文件

时间:2013-01-07 01:37:06

标签: shell search command-line ssh command

多年来,我的网站文件结构变得非常混乱,从上传随机文件到测试不同的东西。我有我所有文件的列表,如:

file1.html
another.html
otherstuff.php
cool.jpg
whatsthisdo.js
hmmmm.js

有什么方法可以通过命令行输入我的文件列表,搜索我网站上所有其他文件的内容,并输出我其他文件中没有提到的文件列表?

例如,如果在我的任何其他文件中没有提到cool.jpg和hmmmm.js,那么它可以在这样的列表中输出它们:

cool.jpg
hmmmm.js

然后没有列出上面提到的任何其他文件,因为它们是在另一个文件中的某处提到的。注意:我不希望它只是自动删除未使用的文件,我会手动执行。

另外,我当然有多个文件夹,因此需要从当前位置递归搜索并输出所有未使用的(未引用的)文件。

我认为命令行将是最快/最简单的方式,除非有人知道另一个。提前感谢你们的任何帮助!

1 个答案:

答案 0 :(得分:1)

是的!使用grep非常容易。在这种情况下,您将运行如下命令:

$ for orphan in `cat orphans.txt`; do \
    echo "Checking for presence of ${orphan} in present directory..." ;
    grep -rl $orphan . ; done

orphans.txt看起来像上面的文件列表,每行一个文件。如果您想要不区分大小写地grep,可以将-i添加到上面的grep。并且您希望在/var/www或您的发行版保留其webroots的任何地方运行该命令。如果在看到上面的“正在检查...”并且下面没有匹配项后,您没有任何与该名称匹配的文件。