Решение проблемы сортировки файлов при записи на флеш-плеер

Недавно я купил себе flash-плеер iRiver T60, привлек он меня прежде всего своей простотой (которая не свойствена всяким iPod'ам, к примеру, копирование музыки не напрямую, а через спецпрограмму, читай, в будущем только iTunes) и соотношением "количество флеш-памяти/цена". Плеер отличный (разве, что наушники не очень), но когда я стал проигрывать, скопированную музыку, обнаружилось, что файлы проигрываются не в алфавитном порядке. Позже, путем исследований и экспериментов, я дошел до того, что они просто не сортируются. К примеру, альбом Orbital - In Sides:

$ ls -1
01 - The Girl With The Sun In Her Head.mp3
02 - P.E.T.R.O.L..mp3
03 - The Box (Part 1).mp3
04 - The Box (Part 2).mp3
05 - Dwr Budr.mp3
06 - Adnan's.mp3
07 - Out There Somewhere (Part 1).mp3
08 - Out There Somewhere (Part 2).mp3

А теперь не будем сортировать.

$ ls -1U
01 - The Girl With The Sun In Her Head.mp3
04 - The Box (Part 2).mp3
05 - Dwr Budr.mp3
08 - Out There Somewhere (Part 2).mp3
02 - P.E.T.R.O.L..mp3
07 - Out There Somewhere (Part 1).mp3
06 - Adnan's.mp3
03 - The Box (Part 1).mp3

Очевидно, система копирует файлы так, как быстрее, не сортируя их предварительно, то есть в порядке расположения на устройстве (а этот порядок в подавляющем большинстве случаев - не алфавитный). Решение этой проблемы (на мой взгляд, наиглупейшей) помог найти мне господин ssvda, за что ему огромнейшее Спасибо). Он написал, по моей просьбе, скрипт, копирующий рекурсивно все файлы из указанной директории в директорию назначения.

#!/bin/bash
# Авторские права: (c) ssvda, 2007 
# Использование: "abcopy.sh  откуда  куда"

ME="${0}" # Имя скрипта (используем для рекурсивного вызова)
FROM="${1}" # Директория, из которой берутся файлы
TO="${2}" # Директория назначения

CUR="${PWD}" # Директория, из которой выполняется скрипт

# Если директория назначения не существует - создаем ее
[ -e "${TO}" ] || mkdir "${TO}"

cd "${TO}" # Идем в директорию назначения
TO="${PWD}" # Обновляем путь

cd "${CUR}" # Идем обратно...
cd "${FROM}" # ...и заходим в директорию, с файлами

FROM="${PWD}" # Обновляем путь

# Выводим список файлов (директорий) в столбик по алфавиту
ls -1 | sort | while read I 
do
    IT="${FROM}/${I}"; # Абсолютный путь элемента
    [ -d "${IT}" ] &" "${IT}" "${TO}/${I}" # ...вызываем рекурсивно скрипт...
    } || {
        cp "${IT}" "${TO}" # ...иначе копируем файл.
    }
done

Сохраняем как abcopy.sh, делаем его исполняемым и копируем в /usr/bin. Все. Остается одно непонятным: зачем инженеры решили обойтись без сортировки? Частично мне стало понятно, когда по моей просьбе проверили в каком порядке копируются файлы в Windows, именно в алфавитном. Если плеер позиционируется как "многоплатформенный" (windows - mac - linux), то будьте добры проверять его удобство использования на всех платформах! >:( Взято из заметок арчера.

Размещено: 29.02.2008 05:18 Всего комментариев: 0
Автор: ferhiord Блог: ferhiord's blog
Тэги: iriver , плеер , скрипт

Комментарии:

Нет комментариев.

Пожалуйста войдите или зарегистрируйтесь чтобы оставлять комментарии.