Portál AbcLinuxu, 1. května 2025 14:04

"Defragmentace" souborů na flash

27.3.2007 15:06 | Přečteno: 1638× | Linux | poslední úprava: 27.3.2007 15:10

Při kopírování hudby na flash disk mi vadilo, že přehrávání pak neprobíhalo popořadě, ale na přeskáčku, jak se zrovna soubory nahrály na flash, tak jsem napsal jednoduchý script na třídění.

#!/bin/bash

path=$1

if [ "$path" == "" ]; then
        echo "Usage: $0 path_to_sort_by_name"
        exit 1
fi
defrag_dir="$path/.defrag"
if [ ! -d "$defrag_dir" ]; then
        mkdir "$defrag_dir"
fi

escpath=`echo $path| sed 's/\//\\\\\//g'`
OLDIFS=$IFS
IFS=:
dirs=`find "$path" -mindepth 1 -type d ! -iname .defrag | sort | sed -e :a -e "N;s/\n/$IFS/;ta"`
topdirs=`find "$path" -mindepth 1 -maxdepth 1 -type d ! -iname .defrag | sort | sed -e :a -e "N;s/\n/$IFS/;ta"`
for dir in $dirs ; do
        dirname=`echo $dir | sed "s/^$escpath//"`
        echo $topdirs | grep $dir >/dev/null
        if [ $? -eq 0 ]; then
                mv "$dir" "$path/.defrag/$dirname" > /dev/null
        fi
        mkdir "$path/$dirname" > /dev/null
        files=`find "$path/.defrag/$dirname" -maxdepth 1 ! -type d | sort | sed -e :a -e "N;s/\n/$IFS/;ta"`
        for file in $files ; do
                mv "$file" "$path/$dirname/"
        done
done

IFS=$OLDIFS
rm -r "$defrag_dir" >/dev/null

Doufám, že tento script bude někomu k prospěchu a že mu nezpůsobí žádné škody

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

27.3.2007 15:09 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: "Defragmentace" souborů na flash
Odpovědět | Sbalit | Link | Blokovat | Admin
A ukážeš nám ten skript? :-)
27.3.2007 15:11 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: "Defragmentace" souborů na flash
Už je tam, chybička se vloudila ;)
Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
Jardík avatar 27.3.2007 18:33 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: "Defragmentace" souborů na flash
Odpovědět | Sbalit | Link | Blokovat | Admin
Pod jakou je to licencí? (kéž by napsal MIT)
Věřím v jednoho Boha.
b42 avatar 27.3.2007 19:39 b42 | skóre: 12 | Ostrava/Brno
Rozbalit Rozbalit vše Re: "Defragmentace" souborů na flash
To musi mit kazdych par radek kodu ktere nekdo napise a nekde zverejni (nic proti autorovu skriptu, mysleno obecne) licenci?
27.3.2007 20:43 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: "Defragmentace" souborů na flash
Nemusi, ale napr. podle ceskeho aut. zakona pak takovych par radku nesmi pouzivat, sirit, upravovat atd. nikdo krome autora.
b42 avatar 27.3.2007 21:13 b42 | skóre: 12 | Ostrava/Brno
Rozbalit Rozbalit vše Re: "Defragmentace" souborů na flash
Hmm, takze takovy .bashrc do ktereho jsem si copypastnul nekolik ruznych kusu skriptu ktere se povalovaly volne na netu a u kterych nebylo co se tyce licence nic napsane vlastne nesmim pouzivat a uz vubec ne nekomu ukazovat?:)

Nj, resim kraviny, ja jen ze to takhle zni docela nepredstavitelne.
27.3.2007 22:03 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: "Defragmentace" souborů na flash
U del umeleckych, ktera jsou uvolnena anonymne, snad existuje zvlastni rezim umoznujici jejich uziti v rozumne mire, ktery ale okamzite zanika, jakmile se autor ke svemu vytvoru dozna.

Na(ne)stesti konfigurak neni dilo umelecke, takze je to tak, jak rikate.

Autorske majetkove pravo (copyright) stavi na principu, ze co neni dovoleno, je zakazano. (Proto licence vse povolujuci jsou oznacovany jako copyleft :)
houska avatar 28.3.2007 19:19 houska | skóre: 41 | blog: HW
Rozbalit Rozbalit vše Re: "Defragmentace" souborů na flash
Na(ne)stesti konfigurak neni dilo umelecke, takze je to tak, jak rikate.
a co kdyz soucasti konfiguraku bude i mnou vytvorenej ascii art? ;)
27.3.2007 23:51 rgb | skóre: 2 | blog: rgblog
Rozbalit Rozbalit vše nechci provokovat, ale... ;)
Odpovědět | Sbalit | Link | Blokovat | Admin
FATSort is a utility that sorts FAT16 and FAT32 partitions. It even can handle long file name entries. It reads the boot sector and sorts the directory structure recursively. This is for example useful for sorting the files on your MP3 player when it doesn't implement a sorting function itself.

http://fatsort.berlios.de/
28.3.2007 09:19 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: nechci provokovat, ale... ;)
To je přesně to co jsem potřeboval, akorát jsem to nedokázal najít. Díky
Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
29.3.2007 10:02 zde | skóre: 9 | blog: Linuch | Brno
Rozbalit Rozbalit vše Re: "Defragmentace" souborů na flash
Odpovědět | Sbalit | Link | Blokovat | Admin
Myslím že by to samé šlo udělat nějakým one-linerem..
Táto, ty de byl? V práci, já debil.
29.3.2007 10:54 zde | skóre: 9 | blog: Linuch | Brno
Rozbalit Rozbalit vše Re: "Defragmentace" souborů na flash
find -type d|while read i;do (cd "$i";mkdir ../d;mv * ../d;rm -rf "$PWD";mv "${PWD%/*}/d" "$PWD"); done
Vyzkoušel jsem tohle, a funguje.. rm -rf z nějakého ujetého důvodu odmítá smazat aktuální adresář, ale proti $PWD naštěstí neprotestuje...
Táto, ty de byl? V práci, já debil.
30.3.2007 09:16 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: "Defragmentace" souborů na flash
Nejsem si jist, jestli to řadí i soubory, pokud ano, tak to nikde nevidím.
Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
30.3.2007 09:57 zde | skóre: 9 | blog: Linuch | Brno
Rozbalit Rozbalit vše Re: "Defragmentace" souborů na flash
Ten mv by měl expandovat hvězdičku na abecední seznam souborů, a v tomto pořadí je přesundou do cílového adresáře, takže by to řadit měl. Jediné co nebude fungovat je pokus o třídění root dir filesystému- pak budou . a ../d v jiných mountech, a mv by je kopíroval, nebo by to vůbec nefungovalo..
Táto, ty de byl? V práci, já debil.
3.9.2007 15:26 Altariel
Rozbalit Rozbalit vše Re: "Defragmentace" souborů na flash
Odpovědět | Sbalit | Link | Blokovat | Admin
Mohl by mi někdo poradit, jak tento script použít? Používám Kubuntu zhruba měsíc a půl, se scripty jsem ještě neměla tu čest, ale zrovna tento bych moc moc potřebovala... Ale nevím jak na to, ani jsem to nikde nenašla:( Díky.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.