#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...
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
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