The PhatSort project provides two command-line utilities for sorting files
and directories on FAT filesystems. The phatsort
utility sorts files and
directories that are already on the filesystem. The seqcp
utility copies
files and directories to the filesystem in sorted order.
There are many MP3 players that allow you to mount the device as external
storage and manage the media yourself. The storage generally uses a FAT
filesystem. When copying multiple files onto the storage, using the command
line (cp
/mv
) or a GUI, they are generally stored in an arbitrary order.
This is not a problem if the firmware of the MP3 player sorts by filename, but
many MP3 players use the order in the FAT filesystem without sorting, which
results in podcasts and album tracks being played out of order.
There are some utilities that sort the FAT tables of an unmounted filesystem. (See Related Software for information and links.) Unfortunately, there are many devices for which this does not work. PhatSort takes a different approach to solving the problem. It works by creating new directories and moving ("renaming") the files in the desired order, while the filesystem is mounted. This method works on all devices that have been tried so far.
PhatSort also (optionally) forces the filesystem buffers to be written to the
storage media after each change. This helps avoid write failures when using
devices that have problems with writing large amounts of data. Note that the
seqcp
utility helps with this issue even on non-FAT filesystems.
PhatSort has only been tested on Linux. It might work on other operating systems. Scripts that are output use POSIX shell commands and therefore require a POSIX shell to execute.
Check the Releases page for .deb
packages.
Check the Releases page for .rpm
packages.
Install PhatSort from Hackage using Cabal as follows:
$ cabal v2-install phatsort
Install PhatSort from Stackage using Stack as follows:
$ stack install phatsort
See the phatsort
and seqcp
man pages for usage information.
FATSort
is a command-line utility that sorts unmounted FAT filesystems
by direct manipulation of the FAT tables. Unfortunately, there are many
devices for which this does not work.
YAFS
is a command-line utility that sorts unmounted FAT filesystems by
direct manipulation of the FAT tables. Visual YAFS
provides a GUI. I
have not tried either of these.
DriveSort
is Windows GUI software that sorts unmounted FAT filesystems
by direct manipulation of the FAT tables. I have not tried it.
- Hackage: https://hackage.haskell.org/package/phatsort
- Stackage: https://www.stackage.org/package/phatsort
- Flora: https://flora.pm/packages/@hackage/phatsort
- GitHub: https://github.com/ExtremaIS/phatsort-haskell
- GitHub Actions CI: https://github.com/ExtremaIS/phatsort-haskell/actions
The main
branch is reserved for releases. It may be considered stable, and
HEAD
is always the latest release.
The develop
branch is the primary development branch. It contains changes
that have not yet been released, and it is not necessarily stable.
Hackage revisions are made for metadata changes, such as relaxation of
constraints when new versions of dependencies are released. The
phatsort.cabal
metadata in the main
branch may therefore not match that of
Hackage. The phatsort.cabal
metadata in the develop
branch may match,
unless work is being done on a new release that contains other changes.
All releases are tagged in the main
branch. Release tags are signed using
the [email protected]
GPG key.
Issues and feature requests are tracked on GitHub: https://github.com/ExtremaIS/phatsort-haskell/issues
Issues may also be submitted via email to [email protected].
This project is released under the MIT License as specified in the
LICENSE
file.