Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: grep parametr -m vice souboru  (Přečteno 1843 krát)

Uran

  • Aktivní člen
  • *
  • Příspěvků: 341
grep parametr -m vice souboru
« kdy: 18 Ledna 2012, 13:43:15 »
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:


Kód: [Vybrat]
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

Kód: [Vybrat]
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?

Kód: [Vybrat]
#!/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
« Poslední změna: 18 Ledna 2012, 15:01:22 od Uran »
"Pouze text v MS Wordu je opravdu čistý, příteli."

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:grep parametr -m vice souboru
« Odpověď #1 kdy: 18 Ledna 2012, 17:33:54 »
delal bych to jinak .. teda kdybych se nad tim zamyslel jeste vic tak bych to patrne delal uplne jinak (a urcite ne bashem), ale ve tvem pripade:

1) ulozil bych si obsah vsech stranek zvlast ponmoci ``find . -iname *.php -exec cat {}\; >/tmp/foo''
2) pro kazdej obrazek bych otestoval vyskyt a kdyz neni tak mazat .. ``for pic in find . -iname img00*.jpg; do grep $pic /tmp/foo || mv -v $pic $trash; done''

^^ soubor se bude cist z nakesovanyho fajlu z pameti ..
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

 

Provoz zaštiťuje spolek OpenAlt.