Potrebuji promazavat na webovych strankach nepouzivane fotografie.
Idea je takova, ze bych prosel vsechny soubory ve slozce s obrazky a porovnal bych to s tim co obsahuji *.php soubory a pripadne duplicity ve slozce obrazku smazal.
Nasledujici skript se nedokaze vyporadat s tim, ze v v nekolika ruznych php souborech muze byt vice stejnych odkazu na obrazky. Zkusil jsem to potlacit u grepu volbou -m 1, ale ta asi funguje jen v ramci jednoho souboru.
Takze kdyz ten skript spustim tak dostanu neco takoveho to:
jakub@jakub-TravelMate-5740:~/Html/php/images/nahledy$ find . -iname 'img00*.jpg' | while read F
> do if [ ! `grep -i -o -m 1 "$F" ../../*.php` ]
> then echo "Neexistuje"
> fi
> done
Neexistuje
Neexistuje
bash: [: ../../12.php:y/img00282.jpg: očekáván unární operátor
Napr. img00353.jpg je v odkazech souborech 12.php i 17.php
grep -i -o -m 1 "$F" ../../*.php
../../12.php:y/img00353.jpg
../../17.php:y/img00353.jpg
Da se to nejak pomoci grepu?
Edit:
Tak se mi to podarilo vyresit. Akorat bych se chtel zeptat jestli to nejde nejak jednoduseji?
#!/bin/bash
find . -iname '*.php' | while read F # najde vsechny php soubory
do grep -i -o -h "img[0-9][0-9][0-9][0-9][0-9]\.jpg" *.php # vygrepuje z nich seznam img... souboru
done | sort | uniq > aktualni-seznam # ulozi do seznamu
find ./images/nahledy -iname 'img00*.jpg' | while read G # prohleda slozku s obrazky a porovna se seznamem z predchoziho cyklu
do if [ ! "`grep -o "${G##*/}" aktualni-seznam`" ] # otestuje jestli soubor nefiguruje v seznamu
then echo "Neexistuje mazu "$G"" # pokud neexistuje smaze img... a tn.... soubory
rm "$G"
echo "Neexistuje mazu "`echo "$G" | sed s#img#tn#g`""
rm "`echo "$G" | sed s#img#tn#g`"
fi
done