bash - pobieranie plików z cache Firefoksa

Potrzebujesz pomocy z C, C++, perl, python, itp.
Awatar użytkownika
jaqbeu
Posty: 57
Rejestracja: 03 lutego 2009, 15:55
Lokalizacja: Warszawa

bash - pobieranie plików z cache Firefoksa

Post autor: jaqbeu »

Czołem

Wstęp i lanie wody
Ostatnio czyszcząc dysk, znalazłem w cache Firefox dużo fajnych zdjęć (a to tapety, a to royalty-free itp.), ale jak pewnie wiecie te pliki nie mają rozszerzeń. Jestem "plikowym pedantem" i lubię, jak pliki mają w nazwie przynajmniej rozszerzenie.
Dużo ich było, więc zmiana rozszerzenia każdego z osobna byłaby męcząca, dlatego napisałem sobie prosty skrypt, który robi to za mnie (pisanie go zajęło mi więcej, niż nazywanie tych plików ręcznie, ale przynajmniej się bashem pobawiłem).

Tekst właściwy
Dzielę się skryptem tutaj, żeby:
1. podzielić się skryptem,
2. poprawić coś w skrypcie,
3. poprawić skrypt wspólnymi siłami.

Oto on:

Kod: Zaznacz cały

#!/bin/bash

clear #A co ma nam być brudno ;)

#główne zadanie funkcji pliki to zrobienie tego: file sprawdza formaty wszystkich plików w folderze; w wyniku grepujemy $n , które jest rozszerzeniem pliku; z wyniku wycinamy samą nazwę pliku. Wynik jest zmienną z nazwami plików, do której dodajemy rozszerzenie pobierane w zależności od wyboru dalej.
pliki ()
{
for i in $(file * | grep $n |  cut -d':' -f1)
do
  mv $i $i.$e
done;
}

echo "Podaj nazwę swojego profilu w Firefoksie/Iceweasel:"
read profil

cd /home/$USER/.mozilla/firefox/*.$profil/Cache/

echo "Jakie pliki chcesz pobrać?"
echo "1. Obrazy JPG"
echo "2. Pliki HTML"

read opcja

case "$opcja" in

1)
n='[JPG,JPEG]'
e='jpg'
pliki $n $e && echo "Zrobione" || echo "Niestety, nie udało się. Na pewno są tu takie pliki?"
;;
2)
n='[HTML]'
e='html'
pliki $n $e && echo "Zrobione" || echo "Niestety, nie udało się. Na pewno są tu takie pliki?"
;;
*)
echo "Not implemented yet ;) "
;;
esac
Pytanie: co zrobić, żeby funkcja pliki nadawała plikom odpowiednie rozszerzenia? Tutaj nie ma problemu, bo pobieramy tylko jpg, ale na przykład gdybym użył programu grep (PNG, JPG, GIF, BMP), to nazwanie ich wszystkich *.jpg byłoby nieciekawe. Wydaje mi się, że można to zrobić prościej niż funkcja w funkcji; może jakaś dziwna pętla?
Proszę też o betatesty i uwagi, jednocześnie prosząc o wyrozumiałość (względną), bo to mój pierwszy użyteczny (trochę) skrypt w bashu (i pierwszy w ogóle).

PS. Internet Explorer i Windows to ściema, bawię się w Firefox ,,User Agentem''.
ponton
Beginner
Posty: 406
Rejestracja: 24 stycznia 2007, 01:40
Lokalizacja: Kalisz/Wroc³aw

Post autor: ponton »

Może na takiej zasadzie:

Kod: Zaznacz cały

pliki()
{
    local typ
    for plik in *
    do
        echo -n "$plik -- "
        typ=`file $plik | cut -d " " -f 2`
        case "$typ" in
            "JPEG")
                echo "jpeg!"
            ;;

            "PNG")
                echo "png!"
            ;;

            *)
                echo "to cos innego: $typ"
            ;;    
        esac
    done
}
ODPOWIEDZ