Сначала я подумал, что вы могли бы уйти, отсканировав файлы на наличие ссылок, а затем проведя различие по структуре папок - но это идентифицирует только простых сирот, а не наборов потерянных файлов, которые ссылаются друг на друга. Таким образом, использование grep, вероятно, не поможет вам в этом.
Это не тривиальное решение, но может стать отличной утилитой для поддержания вашей среды в чистоте (и, следовательно, стоит усилий). Кроме того, вы можете повторно использовать его во всех средах (и делиться им с другими!)
Основная идея состоит в том, чтобы настроить и заполнить диаграмму направленности, в которой ключ каждого узла является абсолютным путем. Это делается путем сканирования всех файлов и добавления зависимостей - например:
/index.html -> /subfolder/file.jpg
-> /subfolder/temp.html
-> /error.html
/temp.html -> /index.html
/error.html
/stray.html -> /index.html
/abandoned.html
Затем вы можете определить все ваши «доступные» файлы, выполнив BFS на корневой странице.
С помощью диаграммы направленности вы также можете классифицировать файлы по степени их входного и выходного уровня. В приведенном выше примере:
/index.html in: 1 out: 2
/temp.html in: 1 out: 1
/error.html in: 1 out: 0
/stray.html in: 0 out: 1
/abandoned.html in: 0 out: 0
Итак, вы в основном ищите файлы, которые в = 0 были оставлены.
Кроме того, файлы с out = 0 будут терминальными страницами; что может или не может быть желательно на вашем сайте (как подсказывает ошибка, это страница с ошибкой).