find und grep - nicht verlinkte Grafiken finden

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Methusalix

find und grep - nicht verlinkte Grafiken finden

Beitrag von Methusalix » 30.11.2009 22:13:02

Hallo,
Eine Frage direkt anhand eines Beispiels: in einem Test-Verzeichnis (mit Unterverzeichnissen) sind 5 gif-Grafiken, von denen 3 in html-Dateien verlinkt sind, die anderen 2 aber nicht. Was ich aufspüren möchte sind eben die letzteren 2 nicht verlinkten.
Was ich bis jetzt habe ist folgendes:

Code: Alles auswählen

#!/bin/bash 
for i in /home/user/test `find -type f -name *.gif`; do
   echo $i
   x=`basename $i`
   find /home/user/test -name "*.html" -type f -exec grep -il "$x" {} \;
   echo "-------------"
done
Das löst nicht direkt das Problem, bringt mich allerdings in etwa in eine lösbare Richtung.
Die Ausgabe sieht so aus:

Code: Alles auswählen

./nochtest/schueler.gif
/Pfad/test/nochtest/auchnochtest/seite2.html
-------------
./nochtest/chronik.gif
/Pfad/test/nochtest/index.html
-------------
./nochtest/quatsch.gif
-------------
./nochtest/info_icon.gif
/Pfad/test/nochtest/index.html
/Pfad/test/nochtest/auchnochtest/seite2.html
-------------
./nochtest/unfug.gif
-------------
Auf eine gefundene gif-Datei folgt die Ausgabe der html-Datei(en), die einen link auf die
gif-Datei enthält. Nur die nicht mehr in html-Dateien verlinkten gif`s (hier quatsch.gif und unfug.gif)
sind lediglich oberhalb und unterhalb mit "--------" eingerahmt.
Ursprünglich wollte ich den Rückgabestatus von "find" auswerten. Der lautet aber 0, ob find nun in den
html-Dateien gif`s findet oder nicht. Ist ja eigentlich auch klar - der Befehl wird ja sauber durchgeführt,
auch wenn nix gefunden wird.
Jetzt muß ich wahrscheinlich eine regex basteln, die die Ausgabe filtert. Meine Frage: gibt`s da nicht
andere und vor allem einfachere Möglichkeiten ?
Gruß M.

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: find und grep - nicht verlinkte Grafiken finden

Beitrag von Meillo » 30.11.2009 22:33:53

Code: Alles auswählen

#!/bin/sh
for i in `find /home/user/test -type f -name *.gif`; do
  find /home/user/test -name "*.html" -type f | xargs cat | fgrep `basename $i`
  if [ $? -ne 0 ] ; then
    echo $i not used
  fi
done
Use ed once in a while!

Methusalix

Re: find und grep - nicht verlinkte Grafiken finden

Beitrag von Methusalix » 02.12.2009 01:30:32

Hallo,

@Meillo: Schönen Dank erstmal für Deine Lösung; sie funktioniert einwandfrei in dem von mir geposteten
Test-Verzeichnis. In dem realen Verzeichnis funktioniert das nicht, aber da nehme ich mal selbstkritisch an,
das ich das nicht korrekt in das Test-Verzeichnis abgebildet habe. Da muß ich noch mal genau hinschauen :roll:

Davon abgesehen: Meine Idee war ja, den Rückgabestatus auszuwerten. Das ist ja genau das, was Du in Deinem Vorschlag machst. Wobei Du allerdings mit Deiner Konstruktion auch einen ungleich Null erhälst (und den dann auch auswerten kannst), ich aber nicht. :?: Da muß ich mir erstmal einen Reim drauf machen!

Gruß M.

Antworten