GNU-Sortierdateinamen mit Präfix und einer oder zwei Ziffern

417
719016

Ich möchte GNU sort verwenden, um die Dateinamen eines findBefehls nach den Nummern im Namen sortieren zu lassen . Der Name der Datei lautet "cycle", dann die erste Nummer, nach der sortiert werden soll, dann ".subset", dann die zweite Nummer, nach der sortiert werden soll, dann "." dann die dritte Zahl, nach der sortiert werden soll. Eine einfache Sortierung funktioniert nicht, da die erste Zahl eine oder mehrere Ziffern enthalten kann:

find /tmp/folder/ -name "cycle*" | sort /tmp/folder/cycle10.subset1.2 /tmp/folder/cycle11.subset1.2 /tmp/folder/cycle12.subset1.2 /tmp/folder/cycle1.subset1.2 /tmp/folder/cycle2.subset1.2 /tmp/folder/cycle3.subset1.2 /tmp/folder/cycle4.subset1.2 /tmp/folder/cycle5.subset1.2 /tmp/folder/cycle6.subset1.2 /tmp/folder/cycle7.subset1.2 /tmp/folder/cycle8.subset1.2 /tmp/folder/cycle9.subset1.2 [...] 

Irgendwelche Ideen?

0

2 Antworten auf die Frage

1
Hannu
... | sort --debug -n -t / -k4.6 

--debugwird Ihnen sagen, was sortder Vergleich bei seiner Arbeit berücksichtigt.
Entfernen Sie es für den tatsächlichen Gebrauch.

sort --helplistet die verfügbaren Optionen auf, man sortmöglicherweise erfahren Sie mehr.

0
broomdodger

Jedes Zeichen kann das Feldtrennzeichen sein:

-t, --field-separator=SEP
Verwenden Sie SEP anstelle von nicht leerem zu leerem Übergang

... | sort --debug -n -ty -k2.4
... | sort --debug -n -tl -k3.2
... | sort --debug -n -te -k3.1