LINUX.ORG.RU

Поиск файлов на сайте без ссылок на них

 , , , ,


0

2

Здравствуйте!

Дано: Сайт с множеством пользовательских файлов (jpg/png/doc/xls/rar/zip/pdf/...), которые уже не актуальны, ссылки на которые были удалены (но не сами файлы).

Задача: Удалить файлы, на которые нет ссылок в файлах *.php (index.php/.left.menu.php/...).

Предполагаемый алгоритм работы:

1) find ищет пользовательские файлы:

find . -type f ! -regex ".*\.\(php\|html\|htm\|css\|js\|htaccess\|config\)"

2) после первого найденного файла grep ищет упоминания этого файла в *.php файлах рекурсивно

3) если хотябы в одном *.php файле упоминается название найденного файла, то считается, что ссылка на файл есть и его удалять не нужно

4) если найденный пользовательский файл не упоминается ни в одном *.php файле, то событие записывается в *.log и файл удаляется

5) после этого повторяется пункт 1 со следующим найденным пользовательским файлом

Вожможно ли? Или это велосипед и существует что-то готовое? (гугл ничего вменяемого не находит)

Это возможно, велосипед, но сомневаюсь, что существует что-то готовое.

l0stparadise ★★★★★ ()

Ищешь в php и делаешь список one
Ищешь в файловой системе и делаешь второй список two
Потом grep -v -f one two

zolden ★★★★★ ()
Ответ на: комментарий от zolden

похоже, я неправильно делаю, пробовал так:

find . -type f -name "*.php" | xargs grep -r "/" > one

find . -type f ! -regex ".*\.\(php\|html\|htm\|css\|js\|htaccess\|config\)" > two

grep -v -f one two > 3.log

я так понял, что в файл one копируется содержимое всех php файлов, которое содержит знак /.

в файле 2 список пользовательских файлов

а это:

grep -v -f one two

сравнение файлов one и two

Ronald73789 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.