Shell : Selectionner et supprimer un fichier en double

Résolu/Fermé
cyssou - Modifié par cyssou le 26/03/2014 à 14:50
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 27 mars 2014 à 15:15
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 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 5 619
27 mars 2014 à 11:25
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
27 mars 2014 à 11:40
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 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 5 619
27 mars 2014 à 13:03
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
27 mars 2014 à 13:10
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 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 5 619
27 mars 2014 à 14:04
ceci n'est pas un tube de communication, dirait Magritte
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
27 mars 2014 à 14:08
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