Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/03/2020, à 10:35

kevino_linux

Supprimer sélectivement plusieurs fichiers

Bonjour à tous,

Je me retrouve confronté à un problème de taille majeure !
Après recherche sur le forum je n'ai rien trouvé de probant.

Voila mon cas : (config ubuntu 18.04)

J'ai dans un dossier deux types de fichiers : des fichiers .log (2200 fichiers) et .star (1100 fichiers).

Chaque fichier .star a son homologue .log

Je dois supprimer tous les autres fichiers .log afin de n'avoir que les fichiers .star et leurs homologues .log
Etant plutôt novice dans les scripts je n'ai pas eu d'idée pour supprimer tous les fichiers d'un seul coup.

Dans le shell chaque fichier .star se trouve au dessus de son homologue .log (je ne sais pas si ça peut aider pour la création d'un script ou autre).
Vous l'aurez compris je suis dans une impasse...

D'avance merci !

Hors ligne

#2 Le 02/03/2020, à 11:03

pingouinux

Re : Supprimer sélectivement plusieurs fichiers

Bonjour,
Tu peux essayer ceci (si c'est bon, tu enlèves le echo).

for f in *.log
do
   rac=${f%.log}
   [ -f "$rac.star" ] || echo rm "$f"
done

Hors ligne

#3 Le 02/03/2020, à 11:47

kevino_linux

Re : Supprimer sélectivement plusieurs fichiers

Salut,

Merci pour ta réponse !
Malheureusement avec ce script ça supprime tout mes fichiers .log présents dans le dossier... hmm

Hors ligne

#4 Le 02/03/2020, à 12:10

pingouinux

Re : Supprimer sélectivement plusieurs fichiers

J'ai pourtant testé le script.
As-tu fait un copier-coller du script, ou l'as-tu recopié ?
Les suffixes .log et surtout .star de tes fichiers sont-ils bien en minuscules ?

Hors ligne

#5 Le 02/03/2020, à 13:04

kamaris

Re : Supprimer sélectivement plusieurs fichiers

kevino_linux a écrit :

Dans le shell chaque fichier .star se trouve au dessus de son homologue .log

Ça n'est pas normal ça, ou alors ta notion d'homologue est à revoir : le fichier .star devrait se trouver au dessous de son homologue .log :

$ touch fichier.log
$ touch fichier.star
$ ls -l fichier.*
-rw-r--r-- 1 user user 0  2 mars  12:59 fichier.log
-rw-r--r-- 1 user user 0  2 mars  12:59 fichier.star
$

Hors ligne

#6 Le 03/03/2020, à 10:32

kevino_linux

Re : Supprimer sélectivement plusieurs fichiers

Bonjour à tous,

Merci pour vos messages.
pingouinux : tout est en minuscule et j'ai copié collé puis recopié le script... rien n'y fait, il continue de vouloir me supprimer tous mes fichiers .log... Par contre je viens de me rendre compte de quelque chose c'est que mes fichiers .star se termine en réalité par _autopick.star. Tout le reste dans le nom est identique aux fichiers .log.
Dans ton script quand j'essaie de remplacer le .star par _autopick.star j'ai le même résultat...
En revanche je l'ai testé sur quelques fichiers se terminant par .log et .star strictement, et ça marche... donc je ne sais pas d'ou vient le soucis !

kamaris : du fait que mes fichiers se terminent par _autopick.star ils sont bien au dessus des .log....

Hors ligne

#7 Le 03/03/2020, à 10:39

pingouinux

Re : Supprimer sélectivement plusieurs fichiers

Si le suffixe n'est pas celui que tu indiques en #1, ça ne peut pas marcher.
Peux-tu montrer 2 fichiers censés se correspondre ?

ls -lb fichier.log fichier_correspondant.star

Hors ligne

#8 Le 03/03/2020, à 10:42

pingouinux

Re : Supprimer sélectivement plusieurs fichiers

C'est sans doute ceci qu'il faut faire :

for f in *.log
do
   rac=${f%.log}
   [ -f "${rac}_autopick.star" ] || echo rm "$f"
done

Hors ligne

#9 Le 03/03/2020, à 10:58

kevino_linux

Re : Supprimer sélectivement plusieurs fichiers

YATTA !!!

Merci infiniment pingouinux pour ta rapidité ! Cette fois c'est bon !

Hors ligne