Ich habe eine Reihe von Dateien in einem Ordner mit einer gemeinsamen Namensstruktur, die etwa wie folgt aussieht:Sub-Sortierung ohne ursprüngliche Sortierreihenfolge zu verlieren?
FOOBAR_1A.8_Alice.pdf
FOOBAR_1A.9_Bob.pdf
FOOBAR_1B.10_Foo.pdf
FOOBAR_1B.11_Bar.pdf
FOOBAR_1B.12_Jack.pdf
FOOBAR_1B.1_Jill.pdf
FOOBAR_1B.2_John.pdf
FOOBAR_1B.3_Mary.pdf
die obige Reihenfolge, um zu erreichen, ich habe eine erste Art Iteration, die wie folgt aussieht:
find . -type f -name "*.pdf" -print | cut -d'/' -f2 | sort
Aber wie Sie sehen können, 10/11/12 vor 1/2/3 gedruckt.
habe ich versucht, Rohrleitungen zurück in Art wieder:
find . -type f -name "*.pdf" -print | cut -d'/' -f2 | sort | sort -t '.' -k 2n
Aber dies bis vermasselt die vorherige Sortierung Bemühungen und Drucke Ausgabe, die wie folgt aussieht: Also,
FOOBAR_1A.7_Alice.pdf
FOOBAR_1B.7_Bob.pdf
FOOBAR_2A.7_John.pdf
FOOBAR_2B.7_Mary.pdf
FOOBAR_2C.7_Foo.pdf
FOOBAR_1A.8_Bar.pdf
FOOBAR_1B.8_Jack.pdf
FOOBAR_2A.8_Jill.pdf
zu fasse zusammen, meine gewünschte Sortierausgabe ist:
FOOBAR_NA.N
sollte numerisch für das erste Zeichen (d. H.FOOBAR_1
dannFOOBAR_2
etc.)FOOBAR_NA.N
sollte dann durch das zweite Zeichen alphabetisch sortiert werden (dhFOOBAR_1A
dannFOOBAR_1B
etc.)FOOBAR_NA.N
sollte schließlich durch die Zahl nach dem ersten Punkt (dhFOOBAR_1A.1
dannFOOBAR_1A.2
etc.) sortiert werden,
Nice! Gute Idee und nett und kurz! Aber nimmt GNU dir/ls mit '-v natürliche Art von (Versions-) Zahlen im Text an. BSD ist '-v erzwingt das unbearbeitete Drucken von nicht-grafischen Zeichen; Dies ist die Standardeinstellung, wenn die Ausgabe nicht an einem Terminal erfolgt. Die längere Version ist also "tragbarer". Ich gebe dir trotzdem +1! :) –