10

Физический порядок файлов имеет значение, когда я копирую их на USB-накопитель и слушаю в автомобильном mp3-плеере. Большинство моих альбомов музыки папок Unsorted, например , ls -f может привести к :
03.song3.mp3
01.song1.mp3
02.song2.mp3

Когда я копирую эту папку на USB-накопитель, файлы копируются в указанном порядке. Мой автомобильный mp3-плеер отображает файлы в несортированном порядке, а это не то, что я хочу. Впоследствии я могу изменить порядок файлов на USB-накопителе (см .: Как изменить порядок папок?(как показано в `ls -U`)), но можно ли вообще этого избежать, если бы я мог переупорядочить их в этом каталоге на жестком диске (ext4)? Есть ли способ сделать это?

(В противном случае может быть способ написать команду find , которая получает файлы, сортирует их, а затем копирует их по порядку ??) Какие-либо предложения?

2 ответа2

5

Вряд ли вы сможете сделать это на ext4. В отличие от FAT(32), который использовал линейную таблицу файлов в каталоге, современные файловые системы используют сложные структуры, такие как B+ дерево (NTFS, XFS) или хешированное B-дерево (ext3/4), где все записи отсортированы в соответствии с конкретный алгоритм.

В частности, ext3/4 сортирует файлы по хеш-значению их имени, поэтому вы всегда получаете одинаковые файлы в одном и том же порядке. Можно отключить функцию dir_index через tune2fs , но это может снизить производительность, если у вас есть каталоги, содержащие много файлов.


Очень простой командой для этого может быть cp dir/* otherdir/ , где оболочка сортирует имена при расширении аргументов, а cp просто копирует их в указанном порядке.

Что-то более сложное для копирования подкаталогов:

#!/usr/bin/env bash
srcdir=$1
destdir=$2

find "$srcdir" \( -type d -printf "0dir %P\0" \) \
            -o \( -type f -printf "1file %P\0" \) |
sort -z | while read -r -d '' type path; do
    case $type in
        "0dir") mkdir -vp "$destdir/$path";;
        "1file") cp -v "$srcdir/$path" "$destdir/$path";;
    esac
done
2

Похоже, у других есть похожие проблемы.

Инструмент, который позволяет пользователям упорядочивать файлы в соответствии с их желаниями и сортирует низкоуровневый стиль файловой системы FAT.

Тот же инструмент на freecode.com

Надеюсь, поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .