Finden Sie wiederholt nummerierte Dateien

0

Ich habe eine Reihe von Dateien mit Namen wie diesen

file_1_v4_sdk.x
file_2_v1_3kl.x
file_3_v1_39f.x
file_3_v2_df0.x
file_4_v4_f33.x
file_4_v1_fks.x
file_4_v5_skd.x
file_5_v2_9ks.x
file_6_v4_911.x
file_7_v2_3jd.x
file_8_v1_9pc.x
file_8_v4_gpq.x

Es gibt also mehrere Versionen einiger Dateien, für diese Versionen ist jedoch keine Bestellung vorhanden. Ich möchte Dateien mit mehreren Versionen finden, nur eine Version im Verzeichnis belassen und die anderen Versionen in ein anderes Verzeichnis verschieben. Ich habe keine Ahnung, wie das geht. Ich kann nur Listen durchlaufen, aber in diesem Fall gibt es keine Reihenfolge.

Ich hoffe ihr könnt mir helfen.

karla
quelle
Dies sollte nicht schrecklich sein, wenn Sie BASH und grep verstehen. Ich kann Ihnen einen Beispielcode erstellen. Ich muss nur wissen, welche Version jeder Datei Sie behalten möchten. Ich nehme an, Sie möchten, dass die höchste Version jeder Datei erhalten bleibt und die anderen auslagert.
TheGrandPackard
ja die höchste version wäre ok und würde die anderen in ein anderes verzeichnis verschieben
karla
"höchste Version wäre ok" Nur "OK"? Bevor sich ein Freiwilliger hier bemüht, Code zu schreiben, erklären Sie, was Sie wirklich wollen.
John1024

Antworten:

1

Versuchen Sie dies mit GNU sort und bash:

cd /path/to/dir/with/your/files
GLOBIGNORE="$(printf "%s\n" file_* | sort -t _ -k2,3r | sort -t _ -k2,2 -u | tr '\n' :)"
mv file_* /path/to/dir/to/save/old/versions
unset GLOBIGNORE
Cyrus
quelle
1
ja das hat perfekt funktioniert, vielen dank, jetzt werde ich herausfinden, wie es funktioniert, danke
karla