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: RRRadek Neužil 03 Listopadu 2012, 12:14:10

Název: Roztřídění souborů po obnově dat z Photorec... [vyřešeno]
Přispěvatel: RRRadek Neužil 03 Listopadu 2012, 12:14:10
Občas obnovuji data pomocí programu Photorec (http://wiki.ubuntu.cz/syst%C3%A9m/datov%C3%A1%20%C3%BAlo%C5%BEi%C5%A1t%C4%9B/testdisk?redirect=1#záchrana_vymazaných_dat_-_photorec) a jak jistě už mnozí z vás víte tak obnovené soubory jsou namixované v různých podadresářích.

Nastane situace kdy mám složku a v ní 100 tisíc souborů v podsložkách ./obnova_dat/recup_dirXXX/  XXX jsou čísla složek. Chtěl bych ale mít vše seřazené ve složkách podle typu souboru. mp3 ve složce MP3 atd...

Potřeboval bych vytvořit "skript/program" který proskenuje složku a podsložky a když nalezne třeba soubor s koncovkou mp3 tak se mrkne ven třeba do složky ../Obnova_dat_roztrideno/ zda se zde nenachází složka MP3 a do ní soubor přesune, v případě že by se tam složka nenacházela tak by složku vytvořil.

Je vůbec něco takového možné? Věděl by někdo jakým způsobem se do toho vrhnout, Bash skript nebo programovat v nějakém jazyce?
Název: Re:Roztřídění souborů po obnově dat z Photorec...
Přispěvatel: Tadeáš Pařík 03 Listopadu 2012, 12:18:51
Ok, tak jak jsme se bavili po jabberu, já šel na to takto:

Kód: [Vybrat]
ls -lR > test.ods
V calcu jsem to nechal bez formátování.

Pomocí funkce right vezmu poslední 4 znaky:

Kód: [Vybrat]
=right(číslo_buňky;4)
Na sloupeček s výstupem s koncovkami (samozřejmě tam mohou být i jiná data) aplikovat filtr a vyzobat si koncovky (na 70 tisících souborech práce na cca 5 minut).

Pak už si můžu udělat pivotky, grafy, prostě co hrdlo ráčí a mám hotovou analýzu  ;)

Název: Re:Roztřídění souborů po obnově dat z Photorec...
Přispěvatel: RRRadek Neužil 03 Listopadu 2012, 12:24:31
@Tadeáš > Ok budu to zatím brát jako plán "B", tzn že bych udělal analýzu co se tam nachází za koncovky a pak ručně vtyvořil složky a překopíroval data do ní viz.
Kód: [Vybrat]
mkdir MP3
mv -fv ./*/*.pm3 ../Obnova_dat_roztrideno/MP3/

Ale moc pohodlné to teda není :-\
Název: Re:Roztřídění souborů po obnově dat z Photorec...
Přispěvatel: pacholik 03 Listopadu 2012, 13:56:10
Kód: [Vybrat]
#!/bin/bash

koncovka() {
f=`basename "$1"`
[ "${f#*.}" == "$f" ] && echo "_bez_koncovky" || echo "${f#*.}" | tr '[:lower:]' '[:upper:]'
}

IFS='
'
new="Obnova_dat_roztrideno"
mkdir "$new"

find . -type f | while read i; do
k=`koncovka "$i"`
[ -d "$new/$k" ] || mkdir "$new/$k"
mv "$i" "$new/$k"
done
Název: Re:Roztřídění souborů po obnově dat z Photorec...
Přispěvatel: jadd 03 Listopadu 2012, 13:58:18
Není to na co se ptáš, ale jen bych poradil vyhledej nejdříve duplikáty, oni totiž můžou být dva stejné soubory, jak pomocí md5, tak zaručeného bytetobyte, i v rozdílných příponách.
A ikdyž se obrázek vykreslí, polovina jeho obsahu může být hledaný txt sobor. Takže grep (rekurzivní) taky nebude marný.
No, a batch renamer udělá taky dobrou službu, třeba z toho obrázku nejdřív .txt aby s tím nebyl problém, pak zase třeba .png
Název: Re:Roztřídění souborů po obnově dat z Photorec...
Přispěvatel: RRRadek Neužil 03 Listopadu 2012, 14:50:29
Kód: [Vybrat]
#!/bin/bash

koncovka() {
f=`basename "$1"`
[ "${f#*.}" == "$f" ] && echo "_bez_koncovky" || echo "${f#*.}" | tr '[:lower:]' '[:upper:]'
}

IFS='
'
new="Obnova_dat_roztrideno"
mkdir "$new"

find . -type f | while read i; do
k=`koncovka "$i"`
[ -d "$new/$k" ] || mkdir "$new/$k"
mv "$i" "$new/$k"
done

Tedy chlape Velký potlesk pro tebe (http://www.agresori.com/kniha/obr/smajlici/s40.gif)
Stačilo vytvořit spustitelný trideni.sh který se hodil do složky která se měla prohledávat. Chvilku to chroupalo a i když nakonec se snažil přesouvat věci umístěné v nově vytvořené složce "Obnova_dat_roztrideno" zase do stejné složky a nakonec zahrnul i samotný trideni.sh také do třídění. :) Každopádně výsledek je famózní. Opravdu moc děkuji, pokud se někdy na nějaké akci potkáme tak máš u mě Večeři/Oběd i s pitím ;)


@Tadeáši> Ten výpis souborů už se vyřešil tady ;)
http://forum.ubuntu.cz/index.php?topic=65393.msg465731#msg465731
Tadeáši nemohl by jsi hodit tento skrip od pacholíka do tipů a triků k photorec? Určitě se to bude hodit každému kdo kdy bude obnovovat data ;)
Název: Re:Roztřídění souborů po obnově dat z Photorec...
Přispěvatel: Tadeáš Pařík 03 Listopadu 2012, 15:09:29
Ok, je to tam. Díky za zajímavý skript, tohle bych dohromady nedal (už jsem si ho uložil do dokumentace, může se hodit).
Název: Re:Roztřídění souborů po obnově dat z Photorec... [vyřešeno]
Přispěvatel: pacholik 03 Listopadu 2012, 17:16:22
to si snad ani nezasloužím :) , vždyť na tom vlastně nic není
Název: Re:Roztřídění souborů po obnově dat z Photorec... [vyřešeno]
Přispěvatel: Tadeáš Pařík 03 Listopadu 2012, 17:23:18
to si snad ani nezasloužím :) , vždyť na tom vlastně nic není

Skript je to fajnový a na wiki má své místo. Půjde, prosím, ještě nějak ošetřit, aby nebral/netřídil sebe sama?

Doplněný návod je zde → http://wiki.ubuntu.cz/syst%C3%A9m/datov%C3%A1_%C3%BAlo%C5%BEi%C5%A1t%C4%9B/testdisk?s

(Jsme si s Radkem říkali, že kdyby to pustil někdo v / nebo v /home/, tak by to byl docela masakr)  :)
Název: Re:Roztřídění souborů po obnově dat z Photorec... [vyřešeno]
Přispěvatel: Kedrigern 03 Listopadu 2012, 17:33:11
Mám tyhle dva skripty, které na Photorec používám. Ale už dlouho si říkám, že je musím přepsat. Problém (který tam řeším) je třeba, že těch souborů může být víc než je povolená délka pole argumentů v bashy (a pak bash víceméně odmítne cokoliv dělat).

https://gist.github.com/2294052
https://gist.github.com/3680325
Název: Re:Roztřídění souborů po obnově dat z Photorec... [vyřešeno]
Přispěvatel: pacholik 03 Listopadu 2012, 19:28:49
> Půjde, prosím, ještě nějak ošetřit, aby nebral/netřídil sebe sama?

Jak je libo, stačí poupravit find
Kód: [Vybrat]
find . -type f ! -wholename "$0" | while...
Název: Re:Roztřídění souborů po obnově dat z Photorec... [vyřešeno]
Přispěvatel: vanad 22 Září 2013, 15:40:20
Jelikož se mi stala taky nemilá věc a potřeboval jsem získat raw data z HDD, zkoušel jsem a hledal různé programy. Po testování můžu vřele doporučit program R-sync, který mi toho našel asi 1000x víc, než photorec a navíc to už pěkně srovnal do složek. Z toho mála, co photorec našel, nebyla ani data, která jsem nejnutněji potřeboval, kdežto s R-linux vpohodě. Dal jsem odkaz na Wiki:

http://wiki.ubuntu.cz/záchrana_dat (http://wiki.ubuntu.cz/záchrana_dat)

Jo a aby se dalo mezi těmi miliony txt, odt...souborů najít, to co hledám, použil jsem nástroje na hledání klíčových slov uvnitř dokumentů, jinak bych to neprošel ani za 10 let!

Ty nástroje jsou tyto (každý je dobrý na jiný typ souboru, nutno vyzkoušet):

docfetcher –  (aplikace java)
docsearcher – (aplikace java)
searchmonkey –
regexxer –
recoll –
Název: Re:Roztřídění souborů po obnově dat z Photorec... [vyřešeno]
Přispěvatel: Myghael 22 Září 2013, 22:08:02
Díky moc, pomohlo mi to.
Název: Re:Roztřídění souborů po obnově dat z Photorec... [vyřešeno]
Přispěvatel: RRRadek Neužil 03 Října 2013, 11:53:45
R-linux opravdu funguje, právě otestováno na doku... flešce. :)
Název: Re:Roztřídění souborů po obnově dat z Photorec... [vyřešeno]
Přispěvatel: bisik 08 Ledna 2014, 16:41:11
Ahoj,
prosím Vás jdu dle návodu na testdisk, resp. na photorec a data mám na extra disku, na konci wiki jsem našel skript na trideni dle koncovek, pokud jdu za pomoci návodu ve wiki končím na poslední příkazu.
Citace
/media/***/My Passport/***/Plocha/recup_dir.265$ ./trideni.sh
bash: ./trideni.sh: Operace zamítnuta

Kde dělám chybu?
díky
Název: Re:Roztřídění souborů po obnově dat z Photorec... [vyřešeno]
Přispěvatel: Mariocz 08 Ledna 2014, 16:55:12
chmod +x trideni.sh
Název: Re:Roztřídění souborů po obnově dat z Photorec... [vyřešeno]
Přispěvatel: GdH 08 Ledna 2014, 18:04:41
chmod +x trideni.sh

Nebo
Kód: [Vybrat]
bash trideni.sh