如何重新排序 FAT32 文件系统的文件?

如何重新排序 FAT32 文件系统的文件?

我知道这听起来有点奇怪,但出于某些原因,我的汽车音响系统按复制的顺序显示文件夹。系统中没有按字母顺序显示文件夹的设置。这真的很烦人,因为我有大约 30GB 的音乐,这意味着很多文件夹,每次我添加一个新文件夹,它都会添加到列表的末尾……而且当您想要搜索特定内容时,它根本不实用。

所以我猜系统是按照 FAT32 记录表中记录的顺序读取文件的。所以问题很简单。有没有办法按字母顺序重新排列这条记录?

答案1

我还没有尝试过,但谷歌搜索的结果似乎几乎完美。 FAT-32 分选机。它甚至几乎准确地描述了您遇到的问题。希望这对您有所帮助。

答案2

这并不奇怪。对列表进行排序需要很多内存,这在 MP3 播放器等小型嵌入式系统上可能不可用。您需要一个足够大的数组来存储所有文件名,然后再对它们进行排序。

因此,这些系统仅按照目录条目存储其子项的顺序列出文件,并且不再需要数组,因为现在您只需加载单个文件名而不是完整的目录列表。

您可以手动对文件进行排序,按照您想要的顺序将它们移动到另一个目录

如果存储介质是 FAT 格式的 USB 拇指驱动器,则文件将根据文件创建和删除的顺序以及文件名称的长度以复杂的顺序枚举。但简单的解决方法是简单地从目录中删除所有文件,然后按照您希望枚举的顺序将文件文件移动到目录中。这样,第一个可用的插槽就是目录末尾的插槽,因此文件条目将被附加。

如果没有指定排序顺序,DIR 命令将按什么顺序排列文件?

或者直接使用专门为此目的制作的工具

答案3

另一个选项是避免需要特定的实用程序并允许您按照所需的任何顺序设置序列,即简单地重命名 FAT32 驱动器上的文件或文件夹。

我有一个用于汽车音响系统的 USB 闪存驱动器(它按照驱动器上的顺序播放文件和文件夹),我使用此技术来设置文件夹的顺序,从而设置音响系统看到它们的顺序。

我的观察是,如果将文件或文件夹重命名为更长的名称,则目录条目将在目录末尾重新创建,因此在播放顺序中看起来会排在最后。然后我可以将其重命名回其原始名称,它将保留其新位置。然后我对每个文件夹或文件重复此过程,直到它们按我想要的顺序排列。从第二个想要的项目开始,然后是第三个想要的项目,依此类推。

为了使这个过程不那么繁琐,可以使用小的批处理文件:

ren %1 %1-padding
ren %1-padding %1
dir

答案4

这是一个基于 @phuclv 建议的简单脚本,即“通过按您想要的顺序将文件移动到另一个目录来手动对文件进行排序”。它不会递归到子目录中。对我来说,它很管用。

$ cat =fat-reorder
#!/bin/zsh
for DIR in "$@"; do
  [[ -d "$DIR" ]] || { >&2 echo "Not a directory: $DIR"; exit 1 }
done

for DIR in "$@"; do
  (
    cd $DIR
    TMP=tmp-$RANDOM
    mkdir $TMP
    mv * $TMP/ 2>/dev/null
    mv $TMP/* .
    rmdir $TMP
  )
done

例子:

sudo fat-reorder /media/CLIPJAM/Music/

相关内容