Физический порядок файлов имеет значение , когда я копирую их на моей флешку и слушать в автомобиле mp3 - плеер. Большинство моих альбомов музыки папок Unsorted , например , ls -f
может привести к :
03.song3.mp3
01.song1.mp3
02.song2.mp3
Когда я копирую эту папку на USB-накопитель, файлы копируются в указанном порядке. Мой автомобильный mp3-плеер отображает файлы в несортированном порядке, а это не то, что я хочу. Впоследствии я могу переупорядочить файлы на USB-накопителе (см .: Как переупорядочить папки? (Как показано в `ls -U`) ), но мог бы избежать этого вообще, если бы я мог переупорядочить их в этом каталоге на моем жестком диске (ext4 )? Есть ли способ сделать это?
(В противном случае может быть способ написать find
команду, которая получает файлы, сортирует их, а затем копирует их по порядку ??) Есть предложения?
Ответы:
Вряд ли вы сможете сделать это на ext4. В отличие от FAT (32), который использовал линейную таблицу файлов в каталоге, современные файловые системы используют сложные структуры, такие как B + дерево (NTFS, XFS) или хешированное B-дерево (ext3 / 4), где все записи отсортированы в соответствии с конкретный алгоритм.
В частности, ext3 / 4 сортирует файлы по хеш-значению их имени, поэтому вы всегда получаете одинаковые файлы в одном и том же порядке. Можно отключить функцию dir_index через
tune2fs
, но это может снизить производительность, если у вас есть каталоги, содержащие много файлов.Это может быть очень простая команда
cp dir/* otherdir/
, когда оболочка сортирует имена при расширении аргументов иcp
просто копирует их в указанном порядке.Что-то более сложное для копирования подкаталогов:
источник
move
файлы сказатьnew_tmp
папку, а затем переместить их назад, но диктовать порядок? (Кажется, работает изнутри GUI для папок ?!)mkdir test1 test2; touch test1/{a,b,c,d} test2/{d,c,b,a}; ls -f test1 test2
- файлы будут отсортированы в том же порядке (a c b .. d .
в моей системе), даже если они были созданы в обратном порядке.cp dir/* otherdir/
выглядит намного проще, но использует исходный порядок. я мог бы осуществить сортировку там?cp
. Попытайтесьecho dir/*
увидеть, к чему они расширяются. Но опять же, это имеет значение только при копировании на карты памяти FAT; это ничего не изменит при копировании в ext4.find SRC_DIR -iname '*mp3' -print0 | sort -z | xargs -0 -I {} cp {} DEST_DIR
Похоже, у других есть похожие проблемы .
Инструмент, который позволяет пользователям упорядочивать файлы в соответствии с их пожеланиями и сортирует низкоуровневый стиль файловой системы FAT.
Тот же инструмент на freecode.com
Надеюсь, это поможет.
источник