3

My MP3 player plays files in the order they have been placed onto the filesystem. Now it seems to Nautilus copies files in some random order, so when listening to an audio book or something I get all the chapters in random order, wich isn't so great when your on a bicycle so you can't take your MP3 player out of your pocket to find the right one. When using mc (Midnight Commander) most files are copies in alphabetical order, and that's the way I want it to happen.

So is there...

  • any way to tell Nautilus to copy files and folders in alphabetical order?
  • a program wich can sort the files and folders in alphabetical order directly on the filesystem?

Additional information:

1
  • Please edit this question to change wich to which (2x). Nov 23, 2021 at 9:00

5 Answers 5

6

To embellish the answer by enzotib ; these players play files in the order they find them in the File Allocation Table (the FAT, in FAT).

FATSort is therefore one potential solution to the problem. The noted warning is for 2 reasons ;

  • The tool edits the file allocation table right at the bare metal level
    • It moves the file entries around within the confines of the directory table, so a corrupt filesystem will be more broken than it was before
    • As long as the filesystem passes a fsck.vfat check, you should be fine.
  • The author appears to feel that he hasn't devoted enough time to making his code secure
    • Potentially, you could create a (broken) file allocation table that caused a buffer overrun or similar problem in the FATSort application
    • In reality, this is unlikely - it's something of a niche application, the opportunities for an attacker to place a specially crafted file system on your MP3 player are limited, and if he had such an opportunity, there are much softer targets he'd go after first
    • Again, if your filesystem passes fsck.vfat (or a disk check in Windows), you should be fine - this is a belt-and-braces disclaimer by the author

palimpsest / Disk Utility has options to do a disk check from the GUI.

Other programs that sort the FAT can be seen here : http://www.murraymoffatt.com/software-problem-0010.html

Alternate solutions ;

Copy files in the play order

The simplest and most obvious is to copy the files to the player in the order which you wish them to play. Nautilus copies files in an apparently indeterminate order to the player file system for much the same reason - it tends to operate on files in the order the iNodes are arranged on disk.

If your track file names have the track number at the beginning, this is ideal. Most of the command line tools will sort things in lexicographic order. As you note, tools like Midnight Commander will also do this.

# Find the files in the source     | copy them to the target folder
# Note we use the          -print0 |       -0   args because media file names
# commonly contain spaces

find /path/to/music/folder -print0 | xargs -0 cp -t /path/to/target/folder

Create a playlist

Some players support playlist files. I keep scripts in my MP3 player filesystem to support generating these playlists. My player is an iRiver device, which has a specific binary playlist format. If your player supports .m3u playlists, the format is extremely simple, and just consists of commented metadata and paths in a text file. I used to make playlists in Rhythmbox and transform them to the iRiver format ; I've not had occasion to make one using Banshee yet (I only make them for workout purposes and my workouts are very predictable...)

3
  • Thanks for the extended answer! Does your script copy recursively (meaning that it takes subfolders with it)? I don't know whether my MP3 player supports playlists (haven't found the option anywhere in the device itself), and it's hard to find any information about it (Yoo Move 1801) as it's a rather unknown device and their whole website is in French.
    – RobinJ
    Nov 11, 2011 at 14:29
  • Hmm... @Adrian? Your script only copies the files wich are inside the folders, throwing them all together in the target folder, destroying my folder structure (well, it doesn't take the folders with it, only the files inside them) :p Do you think you could fix that? :)
    – RobinJ
    Nov 11, 2011 at 15:17
  • I have contacted the developer (who appears German) with better wording of that English disclaimer, and fixed other "usage" inconsistencies (removing "=", which break features).
    – Kevin
    Apr 15, 2016 at 19:55
5

The utility you look for exists, and is FATSort.

It is available in Ubuntu Repositories in the fatsort package.

3
  • I've already had a look at FATSort. Problem is, as I stated in the question, that the FAT32 filesystem on the MP3 player is a bit unusual. And FATSort states this: NOTE: THE FILESYSTEM MUST BE CONSISTENT, OTHERWISE YOU MAY DAMAGE IT! IF SOMEONE ELSE HAS ACCESS TO THE DEVICE HE MIGHT EXPLOIT FATSORT WITH A FORGED CORRUPT FILESYSTEM! USE THIS PROGRAM AT YOUR OWN RISK!
    – RobinJ
    Nov 11, 2011 at 12:15
  • 1
    Consistent is a term windows used in Fat32, meaning the filesystem is free of errors. Simply do an fschk first.
    – Kevin
    Apr 15, 2016 at 19:56
  • Thank you, this utility is useful with the BlitzWolf VP1-Pro projector, which also displays files unsorted.
    – alexg
    Jan 12, 2022 at 12:59
1

It could be that the player uses the modification time of the file. You could use a python script like the following to get all files in a folder, and touch them to change the last access time. Without the player, I can't test the result of cause.

import os
import sys
path = sys.argv[1]
thefiles = os.listdir(path)
thefiles.sort()
for fname in thefiles:
    os.utime(os.path.join(path, fname), None)

This script should be run on the player folder (replace "path_to_the_player_folder" with the actual path) like this (if you saved it as touch_all.py): python touch_all.py "path_to_the_player_folder"

I have no idea on how to tell nautilus how to copy files. Others might answer that part of the question, though.

5
  • 1
    Only applications which display the files sort them in a way. << Well they have been placed on the filesystem in a specific (random) order :p I'm pretty sure ut hasn't got anything to do with the access time (as the order doesn't change when I play a file or anything, either on the computer or on the MP3 player itself). But I'll give it a try.
    – RobinJ
    Nov 11, 2011 at 11:20
  • Well, atime (access time) and mtime (modification time) are different on most file systems. So changing the modification time might help (both are changed by the script). On the other hand, it was really just a guess that the time is used. The actual physical order within the files system seems highly unlikely to me as an odering criterion...
    – xubuntix
    Nov 11, 2011 at 11:25
  • Files are places in the directory (which is a sort of metafile) in a given sequence, as returned by find.
    – enzotib
    Nov 11, 2011 at 11:43
  • you are probably right. I will remove parts of the answer then.
    – xubuntix
    Nov 11, 2011 at 11:45
  • IIRC these players play the files in the order they appear in the file allocation table. See ; murraymoffatt.com/software-problem-0010.html
    – Adrian
    Nov 11, 2011 at 13:23
0

Regarding fatsort, use it like this :

sudo umount /dev/sdxxxx
fatsort /dev/sdxxx

You need to figure out what dev it actually is - could be sda, sdb, etc.

sudo fdisk -l 

should show you the mounted systems.

0

Find out which device name the MP3-Player has:
lsblk
(In my case it was /dev/sdb1)

Show the current order of all files (without doing any changes):
sudo fatsort -l /dev/sdb1

Sort all files on the MP3-Player in alphabetical order:
umount /dev/sdb1
sudo fatsort -a /dev/sdb1

If fatsort complains about a defective file system => repair it:
sudo dosfsck -r -l -v /dev/sdb1

Any questions about command line parameters:
man fatsort
man dosfsck

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .