Die physische Reihenfolge der Dateien ist wichtig, wenn ich sie auf meinen USB-Stick kopiere und im MP3-Player des Autos höre. Die meisten meiner Musikalbum-Ordner sind unsortiert , z. B. ls -f
können
Folgendes erzeugen: 03.song3.mp3
01.song1.mp3
02.song2.mp3
Wenn ich diesen Ordner auf meinen USB-Stick kopiere, werden die Dateien in dieser Reihenfolge kopiert . Mein Auto-MP3-Player zeigt die Dateien in der unsortierten Reihenfolge an, was ich nicht möchte. Ich kann die Dateien auf dem USB-Stick anschließend neu anordnen (siehe: So ordnen Sie Ordner neu an? (Wie in `ls -U` angezeigt) ), könnte dies aber insgesamt vermeiden, wenn ich sie in diesem Verzeichnis auf meiner Festplatte (ext4 ) neu anordnen könnte )? Gibt es eine Möglichkeit, das zu tun?
(Andernfalls kann es einen Weg geben, einen find
Befehl zu schreiben , der die Dateien abruft, sortiert und dann in der richtigen Reihenfolge kopiert?) Irgendwelche Vorschläge?
Antworten:
Es ist unwahrscheinlich, dass Sie dies auf ext4 tun können. Im Gegensatz zu FAT (32), bei dem eine lineare Tabelle von Dateien in einem Verzeichnis verwendet wurde, verwenden moderne Dateisysteme komplexe Strukturen wie B + -Baum (NTFS, XFS) oder Hash-B-Baum (ext3 / 4), nach denen alle Einträge sortiert sind einen bestimmten Algorithmus.
Insbesondere sortiert ext3 / 4 Dateien nach dem Hashwert ihres Namens, sodass Sie immer dieselben Dateien in derselben Reihenfolge erhalten. Es ist möglich, die dir_index- Funktion über zu deaktivieren, dies kann jedoch die Leistung beeinträchtigen
tune2fs
, wenn Sie Verzeichnisse mit vielen Dateien haben.Ein sehr grundlegender Befehl hierfür könnte sein
cp dir/* otherdir/
, dass die Shell beim Erweitern von Argumenten Namen sortiert und siecp
einfach in der angegebenen Reihenfolge kopiert.Etwas komplexeres zum Kopieren von Unterverzeichnissen:
quelle
move
die Dateien zu einemnew_tmp
Ordner zu machen und sie dann zurück zu verschieben, aber die Reihenfolge zu bestimmen? (Scheint aus einer GUI für die Ordner zu arbeiten?!)mkdir test1 test2; touch test1/{a,b,c,d} test2/{d,c,b,a}; ls -f test1 test2
- die Dateien werden in derselben Reihenfolge (a c b .. d .
in meinem System) sortiert , obwohl sie in umgekehrter Reihenfolge erstellt wurden.cp dir/* otherdir/
sieht viel einfacher aus, verwendet aber die ursprüngliche Reihenfolge. könnte ich dort sortieren implementieren?cp
. Versuchen Sieecho dir/*
zu sehen, worauf sie sich ausdehnen. Aber auch hier ist es nur wichtig, wenn auf FAT-Speichersticks kopiert wird. es wird nicht alles ändern , wenn ext4 zu kopieren.find SRC_DIR -iname '*mp3' -print0 | sort -z | xargs -0 -I {} cp {} DEST_DIR
Sieht so aus, als hätten andere ähnliche Probleme .
Tool , mit dem Benutzer Dateien nach ihren Wünschen anordnen und das Low-Level-Format des FAT-Dateisystems sortieren können.
Gleiches Tool auf freecode.com
Ich hoffe es hilft.
quelle