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
-
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?
-
Ok, tak jak jsme se bavili po jabberu, já šel na to takto:
ls -lR > test.ods
V calcu jsem to nechal bez formátování.
Pomocí funkce right vezmu poslední 4 znaky:
=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 ;)
-
@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.
mkdir MP3
mv -fv ./*/*.pm3 ../Obnova_dat_roztrideno/MP3/
Ale moc pohodlné to teda není :-\
-
#!/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
-
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
-
#!/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 ;)
-
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).
-
to si snad ani nezasloužím :) , vždyť na tom vlastně nic není
-
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) :)
-
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
-
> Půjde, prosím, ještě nějak ošetřit, aby nebral/netřídil sebe sama?
Jak je libo, stačí poupravit find
find . -type f ! -wholename "$0" | while...
-
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 –
-
Díky moc, pomohlo mi to.
-
R-linux opravdu funguje, právě otestováno na doku... flešce. :)
-
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.
/media/***/My Passport/***/Plocha/recup_dir.265$ ./trideni.sh
bash: ./trideni.sh: Operace zamítnuta
Kde dělám chybu?
díky
-
chmod +x trideni.sh
-
chmod +x trideni.sh
Nebo
bash trideni.sh