|
bash - pobieranie plików z cache Firefoksa
jaqbeu - 06-07-2009 23:43
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:
#!/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 - 09-07-2009 19:18
Może na takiej zasadzie:
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 }
zanotowane.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|