Shell : Selectionner et supprimer un fichier en double

Résolu
cyssou -  
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai un petit soucis. dans un répertoire je dois vérifier si je n'ai pas de fichier en double, et si c'est le cas, je dois supprimer un des deux.
Dans le nom des fichiers en double, la seule chose qui varie c'est un nombre à la fin.

Par exemple:
Dans mon repertoire j'ai :
température_100m_123.grid
salinité_10m_1254.grid
température_50m_2569.grid
température_100m_258.grid

j'ai donc deux fois le fichier température_100m.
Il faudrait que mon script test si il y a doublon, et si oui (comme pour la température à 100m ici), il me supprime définitivement du répertoire celui dont le numéro est plus plus bas (correspond dans mon cas au plus ancien) en faisant par exemple un comparaison des deux nombres....
J'espère que vous pouvez m'aidez et merci d'avance à ce qui vont essayer...
A voir également:

1 réponse

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
essayer
ls | sort -nrt _ -k 2,3 | awk -F _ '{t[$1, $2]=$0; t2[$2]++} END {for (n in t){split(t[n], a); if(t2[a[2]]>1) print t[n]}}'
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Salut,

Je n'ai pas voulu répondre hier parce qu'il me semblait que ma syntaxe était un poil tordue et que je me disais "De toute façon le dubcek il va nous pondre un truc concis avec awk dont il a le secret...", mais pour une fois, j'ai (il me semble), plus simple :

$ ls -1
salinité_10m_1254.grid
salinité_10m_1287.grid
température_100m_123.grid
température_100m_258.grid
température_50m_2569.grid

$ ls | fgrep -v "$(ls -r | sort -t '_' -u -k 1,1 -k 2,2)" | xargs -I {} echo 'rm -f '{}
rm -f salinité_10m_1254.grid
rm -f température_100m_123.grid

;-))
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
gé pa pansé à
sort -t '_' -u -k 1,1 -k 2,2

mais je vois 2 ls ... tssss
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
mais je vois 2 ls ... tssss
Si on enlève le pipe de
xargs rm
(que tu n'as pas dans ta syntaxe), on en est à 2 paillepeux¹ chacun. Match nul, balle au centre ;-))


¹ Je l'écris phonétiquement pour éviter toute analogie à autre chose, hein ? ;-D
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
ceci n'est pas un tube de communication, dirait Magritte
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
C'est clair, on risque même l'excommunication sous certains cieux pour avoir communiqué par cette voie pénétrable s'il en est ;-))
0