Skocz do zawartości
Gość l3szcz

Sortowanie plików i ich przerzucenie po ID

Polecane posty

Gość l3szcz

Witam,

może dokładnie tytuł nie wyjaśnia tego co chcę osiągnąć ale już opisuję.

Mam katalog ze zdjęciami (powiedzmy img), w którym pliki są nazwane jako ID z bazy.

W tym momencie plików jest masakryczna ilość (około 300 000) i chcę je posegregować wedle ID po czym przerzucić do odpowiednich folderów.

Przykładowo - mam fotki z IDkami od 1 do 1000 i chciałbym by znalazły się one w folderze 1 gdzie "1" będzie oznaczać liczbę tysiąca a sam plik miałby się nazywać w tym folderze jako kolejny ID.

I o ile z przerzuceniem zdjęć od 1 do 1000 nie miałbym problemu zastanawiam się jak:

- zaokrąglić liczbę do tysiąca

- po czym zmienić nazwę pliku (najprostsze)

- przerzucić do odpowiedniego folderu (1-15)/id_pliku bez liczby tysiąca

 

Języki, które mogę wykorzystać to PHP / BASH.

 

Przykładowy wygląd folderu:

 

img/1/15.jpg

img/1/255.jpg

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Pseudo kod:

currentID;

folderID = (int) (currentID / 1000); // zależnie od języka trzeba pozbyć się części dziesiętnych czyli rzutować lub zaokrąglić do inta
newID = currentID % 1000; // reszta z dzielenia czyli to co zostaje jest nowym id

copy(currentPath + "/" + currentID + ".jpg", "img/" + folderID + "/" + newID + ".jpg"); // wymyśliłem sobie funkcje generalnie przenosisz zależnie od języka plik do nowej lokalizacji budując ścieżkę jak w tym przykładzie

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A na ile chcesz folderów podzielić?

 

Bo czasami lepiej wziąć pod uwagę np. ostatnią (wtedy będzie 10 katalogów) lub dwie ostatnie (100 katalogów) cyfry z nazwy pliku.

 

Zalety:

- masz stałą liczbę katalogów

- masz pliki porozkładane równo po wszystkich katalogach

- z samej nazwy możesz wywnioskować w którym katalogu powinien być dany plik (bez żadnych obliczeń), dzięki temu możesz np. tworzyć wpisy rewrite rule w .htaccess

- nie musisz zmieniać nazw plików

Edytowano przez nnd_newbie (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×