Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: petrakis 14 Srpna 2010, 21:57:44

Název: Komplexni skript pro uklid adresaru
Přispěvatel: petrakis 14 Srpna 2010, 21:57:44
Dlouho jsem si pohraval s myslenkou, udelat si nejaky skriptik ktery by dokazal nasledujici:

Priklad, v adresari downloads mam vsechno mozny a potreboval bych aby jednim klikem se vse presunulo tam kam ma, hezky uklizene. (fotky do fotek, scripty do scriptu atd). To same treba kdyz programuji, tak desktop se zaprasi fotkama, scriptama, poznamkama atd. Dulezite vsak bylo ne presunout to jenom nekam , ale zaroven roztridit.

No a tak jsem si udelal: File-Organizer

Script funguje presne tak jako chci, je zalozenej na zaklade detekce koncovky. Podporuje vice nez 470 formatu, pri cisteni plochy zastupci programu co maji koncovku .desktop jsou opetovne vytvareny, takze je nemaze. Funkcnost je ciste jenom vuci souborum, nema vlyv na adresare.


K dispozici jsou dve verze pouziti. Prvni je spousteni jenom samotneho skriptu, kde vsak treba dbat na to aby jste neuklizeli adresar ve kterym se samotnej skript nachazi, jinak se uklidi take. Tou druhou moznosti, je za pomoci install.sh skriptu provest instalaci systemove, co nasledne zobrazi take novou polozku v menu pod "Accessories" jako "File-organizer".

Samotne nastaveni cilovych adresaru je jednoduchy, po zpusteni si staci vybrat moznost "edit settings" a zde je videt jak cilove adresare vypadaji. Adresare je mozne si editovat anebo ponechat preddefinovane. Jestli adresar ktery je preddefinovanej , nemate tak ten bude automaticky vytvoren. Pri editaci pozor na dodrzovani radku , jsou totiz detekovany za pomoci readline, takze radky ktere potrebujeme jsou radky 3 az 8.

Samotnej script je dostupnej ke stazeni zde: http://gnome-look.org/content/show.php/Directory+cleaner+and+files+organizer?content=128808 (http://gnome-look.org/content/show.php/Directory+cleaner+and+files+organizer?content=128808)

[attachment deleted by admin]
Název: Re: Komplexni skript pro uklid adresaru
Přispěvatel: arrange 16 Srpna 2010, 14:03:06
A nebylo by to jednodušší přes mime-type?
Kód: [Vybrat]
#! /bin/bash
A=/tmp

find ~/Plocha -type f | while read F; do
  # vytáhne mime-type
  typ=`gvfs-info -a standard::content-type "$F" | grep type | cut -d: -f4`

  # roztřídí do souborů dle mime-type
  case $typ in
    *rtf*|*opendocument*|*excel*|*office*|*pdf*|*msword*|*calc*|*writer* )
      echo `basename "$F"` >> $A/docs
    ;;
    *audio*|*video* )
      echo `basename "$F"` >> $A/multimedia
    ;;
    *image* )
      echo `basename "$F"` >> $A/images
    ;;
    *java*|*perl*|*ruby*|*shell*|*python* )
      echo `basename "$F"` >> $A/scripts
    ;;
    *text* )
      echo `basename "$F"` >> $A/texts
    ;;
    * )
      echo `basename "$F"` >> $A/unknown
    ;;
  esac
done
Název: Re: Komplexni skript pro uklid adresaru
Přispěvatel: petrakis 16 Srpna 2010, 14:27:59
V podstate to jde udelat pres mime-type, nejsem si vsak jistej jestli napriklad u *image* budou vsechny rozeznatelne, a pokud chces u archivu misto *.tar.gz vypisovat zpusobem : application/x-gzip (protoze nemuzes jit jenom pres application) tak ten seznam bude stejny a mozna i delsi.

Pravdu vsak mas v tom, ze za pouziti mime-type se urcite jednim argumentem nahradi mnozstvi dalsich (zejmena u image, video). Asi by to chtelo otestovat, zejmena ty formaty *image* . Chtelo by to kontrolu napr zde:http://www.w3schools.com/media/media_mimeref.asp (http://www.w3schools.com/media/media_mimeref.asp), a pokud to sedi, tak to jde zjednodusit. Kouknu se na to a mozna to zjednodusim. Diky za napad  ;)
Název: Re: Komplexni skript pro uklid adresaru
Přispěvatel: petrakis 16 Srpna 2010, 14:46:29
koukajic na specifikaci tak pokud by se u dokumentu, archivu a programu vytahoval sub-type a u multimedii jenom type tak to pres mime-type pujde urcite mnohem snaz
Název: Re: Komplexni skript pro uklid adresaru
Přispěvatel: arrange 16 Srpna 2010, 14:47:41
Na mých dokumentech image, audio a video fungovalo perfektně. Problémy byly jen s application.
Další výhodou MIME je to, že zkoumáme skutečný obsah souboru, ne (možná chybnou nebo neexistující) příponu.
Název: Re: Komplexni skript pro uklid adresaru
Přispěvatel: petrakis 16 Srpna 2010, 14:54:18
ano problem je jenom u application , koukajic zde: http://www.ltsw.se/knbase/internet/application.htp (http://www.ltsw.se/knbase/internet/application.htp) je potreba vytahnout sub-type
Název: Re: Komplexni skript pro uklid adresaru
Přispěvatel: petrakis 16 Srpna 2010, 20:50:43
Zatim jsem reseni pres mime-type nenasel, script je vsak upravenej, je tam pridana take detekce souboru co maji v nazvu mezery, soubory .desktop jsou reseny jinym zpusobem nez puvodne.

Reseni pres gvfs, anebo ciste jenom pres find s atributem --mime by bylo fakt dobre pokud by se to u "applications" nepralo. Zpusob detekovani mime je asi urcite vhodnej pro beznyho uzivatele, co prijde do kontaktu s asi max 20 formatama, v jinym pripade spravny zatrizeni, pokud neni zpusob detekce sub-type asi pres mime nepujde
Název: Re: Komplexni skript pro uklid adresaru
Přispěvatel: MacHala 16 Srpna 2010, 21:15:18
btw, neplanujes i nejake trideni podle nazvu odpovidajiciho regularnimu vyrazu?
Název: Re: Komplexni skript pro uklid adresaru
Přispěvatel: petrakis 16 Srpna 2010, 22:57:52
btw, neplanujes i nejake trideni podle nazvu odpovidajiciho regularnimu vyrazu?

zajimava myslenka, mozna ze jo, take se pohravam s myslenkou, udelat to tak aby to hledalo take v pod-adresarich, vytahlo z nich vse a zatridilo
Název: Re: Komplexni skript pro uklid adresaru
Přispěvatel: MacHala 17 Srpna 2010, 00:01:16
@petrakis:
sam uz delsi dobu premyslim o necem podobnem, puvodne me to napadlo pri objeveni KDE appletu "magic folder" (tridi soubory ktere se na nej pretahnou), s tim ze by to fungovalo jako daemon, ktery by skenoval adresar a presouval automaticky... nicmene vzhledem k pomalemu rozjezdu semantickeho desktopu mozna vsechny podobne veci ztrati v blizke budoucnosti smysl...

btw, imho bys mel osetrit, jestli soubor daneho jmena uz v cilovem adresari neexistuje, takhle muzes prijit o dulezita data, ani nemrknes...
Název: Re: Komplexni skript pro uklid adresaru
Přispěvatel: petrakis 17 Srpna 2010, 14:06:51
zamezeni prepisovani souboru je spraveno, ve verzi 2.1 kontroluje jestli dany soubor existuje a jestli ano, nejdrive zmeni nazev pridanim "timestamp-u" do nazvu a az nasledne jej presune.

Ad "Magic Folder"  Vlastne svym zpusobem to funguje jako magic folder, akorat to delas manualne, spravit to vsak jako daemona, neni obtizne. Btw. nevim kdo s tim magic folderem byl prvni, kdysi davno jsem to videl u windowsu jako gadget.
Název: Re: Komplexni skript pro uklid adresaru
Přispěvatel: petrakis 19 Srpna 2010, 12:57:08
Do verze 2.2 jsem dal moznost jeste komplexnejsi organizace takze treba scripty uklidi zpusobem ze vytvori v adresari slozky podle koncovek a tam presune patricne soubory

vypada to asi takhle

Citace
for EXTENSIONS in ${i##*.}; do
if [ -d $progdir/$EXTENSIONS ]; then
echo "$EXTENSIONS found in $progdir, not created"
else
mkdir -p $progdir/$EXTENSIONS
fi

for FILES in $( ls -l | grep -v ^d ); do
EXTENSION=${FILES##*.}
q=$(date '+%Y-%m-%d_%H:%M_')
if [ -e $progdir/$EXTENSION/$FILES ];then
mv $FILES $q$FILES
mv $q$FILES $progdir/$EXTENSION/$q$FILES
else
mv $FILES $progdir/$EXTENSION/$FILES
fi
done
done

a vysledek je na screenshotu



[attachment deleted by admin]
Název: Re: Komplexni skript pro uklid adresaru
Přispěvatel: Bum 17 Března 2011, 09:46:00
Hm. Asi som slabo chapajuci ale ako sa tento cleaner spusta?
./cmd_cleaner mi hodi toto

no option selected

Název: Re: Komplexni skript pro uklid adresaru
Přispěvatel: jmp 17 Března 2011, 10:05:12
hmm - asi ocekava nejaky parametr(y) a zadny nedostal...
Název: Re: Komplexni skript pro uklid adresaru
Přispěvatel: pan Filuta 17 Března 2011, 10:56:14
Bume, díky tvé neochotě věnovat řešení "problému" aspoň minutu jsem se dozvěděl o zajímavém skriptu. :)

"Návod k použití" je ta zvýrazněná část (http://gnome-look.org/content/show.php/?content=128808).

Citace
There are two options available, standard cleaning and advanced. Command for standard cleaning is as follow:
sh cmd_cleaner s /home/user/Downloads

for advanced only the letter "s" is changed to letter "a" like this:
sh cmd_cleaner a /home/user/Downloads
Název: Re: Komplexni skript pro uklid adresaru
Přispěvatel: Bum 17 Března 2011, 12:47:19
Bume, díky tvé neochotě věnovat řešení "problému" aspoň minutu jsem se dozvěděl o zajímavém skriptu. :)

"Návod k použití" je ta zvýrazněná část (http://gnome-look.org/content/show.php/?content=128808).

Citace
There are two options available, standard cleaning and advanced. Command for standard cleaning is as follow:
sh cmd_cleaner s /home/user/Downloads

for advanced only the letter "s" is changed to letter "a" like this:
sh cmd_cleaner a /home/user/Downloads
Odpoved na prvu cast vety.
Tak to prrr. :) Venoval som tomu viac ako minutu skusal som v tom zadavat parametre ale zjavne zle. Zena ktora vie po Anglicky nebola prave doma a ja kedze neviem po Anglicky lachko prehliadnem veci. Ano to na tej stranke mi fakt uslo. Dik. Uz je to jasne.
Odpoved druha cast vety.
Neni za co. Mam cas tak tu beham po fore a hladam zaujimave skriptiky. :)
Název: Re: Komplexni skript pro uklid adresaru
Přispěvatel: Tadeáš Pařík 19 Března 2011, 12:13:04
Pěkná práce, trošku jsem si to upravil pro své použití, ale jinak hezký  :)