Trova i file numerati ripetuti


0

Ho un sacco di file con nomi come questo

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

Quindi, ci sono diverse versioni di alcuni file, ma tali versioni non hanno un ordine. Voglio trovare quei file che hanno diverse versioni e lasciare solo una versione nella directory e spostare le altre versioni in un'altra directory. Non ho idea di come farlo. So solo come iterare sulle liste, ma in questo caso non c'è ordine.

Spero che puoi aiutarmi.


Questo non dovrebbe essere terribile da fare se comprendi BASH e grep. Posso farti qualche esempio di codice, ho solo bisogno di sapere quale versione di ciascun file vuoi mantenere - presumo tu voglia la versione più alta di ogni file per rimanere e spostare gli altri fuori?
TheGrandPackard

sì, la versione più alta sarebbe ok e sposta gli altri in un'altra directory
karla

"la versione più alta sarebbe ok" Solo "OK"? Prima che un volontario qui faccia lo sforzo di scrivere il codice, spiega quello che vuoi veramente.
John1024

Risposte:


1

Prova questo con GNU sort e 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

1
sì, questo ha funzionato perfettamente, grazie mille, ora scoprirò come funziona, grazie
karla
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.