#1 Le 18/04/2016, à 18:32
- antistress
[résolu] Appliquer une même commande à une liste de fichiers
Bonjour à tous,
Dans mon blogue sous Pluxml, j'ai un répertoire d'images (jpg, png, gif).
Je récupère la liste des fichiers en terminal ou dans un fichier avec un "ls" ou "ls > liste.txt"
A présent j'aimerais appliquer une même commande pour chacun de ces fichiers ("grep -lri nom_du_fichier" dans le répertoire des billets du blogue) pour savoir si le fichier est actuellement utilisé dans un billet
Comment puis-je automatiser l'opération, avec une logique du type : pour chacun de ces fichiers, exécuter la commande machin ?
Merci d'avance !
Dernière modification par antistress (Le 21/04/2016, à 09:36)
Blogue : Libre et ouvert
Hors ligne
#2 Le 18/04/2016, à 18:56
- jplemoine
Re : [résolu] Appliquer une même commande à une liste de fichiers
avec une commande for...
exemple de code :
for f in * ;do echo "fichier : $f"; done;
Ce compte ne servira plus : vous pouvez le supprimer si le coeur vous en dit...
Laissé par l'auteur pour historique.
Hors ligne
#3 Le 18/04/2016, à 23:04
- antistress
Re : [résolu] Appliquer une même commande à une liste de fichiers
Merci jplemoine mais je suis un peu perdu.
Comment combiner la commande for et l'instruction précédente https://forum.ubuntu-fr.org/viewtopic.p … #p21499019
Avec un pipe ou en passant par une sortie texte ?
Le but est de rechercher les noms des images dans les différents fichiers qui forment mes billets de blogue.
Merci d'avance !
Blogue : Libre et ouvert
Hors ligne
#4 Le 19/04/2016, à 05:10
- pingouinux
Re : [résolu] Appliquer une même commande à une liste de fichiers
Bonjour,
Comment combiner la commande for et l'instruction précédente https://forum.ubuntu-fr.org/viewtopic.p … #p21499019
En mixant les commandes de cette façon
while read f;do echo "fichier : $f"; done < <(ls -I 'tb.*')
Hors ligne
#5 Le 19/04/2016, à 12:26
- antistress
Re : [résolu] Appliquer une même commande à une liste de fichiers
Merci, j'essaye de comprendre.
À quoi se refert "f" dans "while read f" ?
Sinon les commandes sont relatives différents repertoires :
ls -I 'tb.*' c'est à exécuter dans /data/images tandis que la boucle c'est dans /data/articles
Blogue : Libre et ouvert
Hors ligne
#6 Le 19/04/2016, à 12:51
- pingouinux
Re : [résolu] Appliquer une même commande à une liste de fichiers
À quoi se refert "f" dans "while read f" ?
f est un nom arbitraire de variable, qui prendra successivement le nom des fichiers listés par ls.
Si j'ai bien compris ce que tu veux faire
cd /data/articles
while read f; do echo "fichier : $f"; done < <(ls /data/images -I 'tb.*')
Hors ligne
#7 Le 19/04/2016, à 13:12
- antistress
Re : [résolu] Appliquer une même commande à une liste de fichiers
Merci mais la commande se borne à lister tous les fichiers de /data/images (avec tb. ou sans d'ailleurs) ?
Blogue : Libre et ouvert
Hors ligne
#8 Le 19/04/2016, à 13:39
- pingouinux
Re : [résolu] Appliquer une même commande à une liste de fichiers
Il faut que tu remplaces le echo par la commande qui t'intéresses, sachant que le fichier sera "$f".
Hors ligne
#9 Le 19/04/2016, à 23:40
- antistress
Re : [résolu] Appliquer une même commande à une liste de fichiers
Ha j'ai pigé, merci.
Par contre quand je fais le test à la main une image par une, je lance juste un grep -lri nom_du_fichier_image et soit il me liste les billets correspondants, soit il ne renvoie rien et je sais que l'image n'est pas utilisée.
Si j'inclue cette commande à ton exemple :
cd /data/articles
while read f; do grep -lri "$f"; done < <(ls /data/images -I 'tb.*')
alors je récupère une liste de billets sans pouvoir savoir au final si des images sont inutilisées.
Du coup il me faudrait une autre commande pour faire le test : une idée ?
Dernière modification par antistress (Le 19/04/2016, à 23:41)
Blogue : Libre et ouvert
Hors ligne
#10 Le 20/04/2016, à 05:22
- pingouinux
Re : [résolu] Appliquer une même commande à une liste de fichiers
Éventuellement ceci
while read f; do echo "Nom de l'image : $f"; grep -lri "$f"; done < <(ls /data/images -I 'tb.*')
Hors ligne
#11 Le 20/04/2016, à 09:26
- antistress
Re : [résolu] Appliquer une même commande à une liste de fichiers
Merci pour tes conseils : Je crois que ça pourrait le faire, mais par contre les images tb.* font partie du traitement au lieu d'être ignorées...
Blogue : Libre et ouvert
Hors ligne
#12 Le 20/04/2016, à 09:39
- pingouinux
Re : [résolu] Appliquer une même commande à une liste de fichiers
mais par contre les images tb.* font partie du traitement au lieu d'être ignorées
Je suis très surpris. Fais un copier-coller des commandes que tu as lancées.
Hors ligne
#13 Le 20/04/2016, à 10:05
- antistress
Re : [résolu] Appliquer une même commande à une liste de fichiers
Juste la tienne mais en mettant le chemin absolu vers data/images/ car je ne sais pas indiquer le chemin relatif depuis data/articles/
while read f; do echo "Nom de l'image : $f"; grep -lri "$f"; done < <(ls /mnt/data/Documents/Informatique/Blogue/Backup18042016/htdocs/data/images -I 'tb.*')
Blogue : Libre et ouvert
Hors ligne
#14 Le 20/04/2016, à 12:21
- pingouinux
Re : [résolu] Appliquer une même commande à une liste de fichiers
Quel est le résultat de
while read f; do echo "=$f="; done < <(ls /mnt/data/Documents/Informatique/Blogue/Backup18042016/htdocs/data/images -I 'tb.*')
Hors ligne
#15 Le 20/04/2016, à 15:28
- antistress
Re : [résolu] Appliquer une même commande à une liste de fichiers
c'est la liste de TOUTES les images, avec ceux *.tb.*
Blogue : Libre et ouvert
Hors ligne
#16 Le 20/04/2016, à 16:00
- pingouinux
Re : [résolu] Appliquer une même commande à une liste de fichiers
Dans ce cas, je ne comprends pas.
Ôte-moi d'un doute : les images à éliminer sont bien tb.jpg ou tb.png, mais pas biduletb.jpg ni .tb.png ni bidule.tb.png ?
Hors ligne
#17 Le 20/04/2016, à 16:05
- antistress
Re : [résolu] Appliquer une même commande à une liste de fichiers
pour bidule.jpg, bidule.png et bidule.gif, le blogue associe automatiquement bidule.tb.jpg, bidule.tb.jpng et bidule.tb.jgif qu'il convient d'ignorer
Blogue : Libre et ouvert
Hors ligne
#18 Le 20/04/2016, à 16:23
- pingouinux
Re : [résolu] Appliquer une même commande à une liste de fichiers
Dans ce cas, je n'ai sans doute rien compris à ce que tu veux faire. Pourrais-tu donner un petit exemple précis ?
Hors ligne
#19 Le 20/04/2016, à 16:30
- antistress
Re : [résolu] Appliquer une même commande à une liste de fichiers
Je voudrais, pour chaque image (sauf celles contenant "*.tb.*") présente dans data/images/, interroger la liste des fichiers présents dans data/articles/ pour savoir si le nom du fichier image y est cité.
Sinon c'est que l'image n'est plus utilisée actuellement et que je peux la supprimer.
Actuellement je peux le faire pour une image donnée, en me mettant dans data/articles/ et en executant "grep -lri nom_du_fichier_image" : si la commande ne renvoie rien c'est que l'image n'est pas utilisée, sinon la commande renvoie la liste des billets qui incluent un lien vers l'image.
merci de ta paience
Dernière modification par antistress (Le 20/04/2016, à 16:30)
Blogue : Libre et ouvert
Hors ligne
#20 Le 20/04/2016, à 16:46
- pingouinux
Re : [résolu] Appliquer une même commande à une liste de fichiers
C'est bien ce que j'avais compris. Dans ce cas, montre le retour (copier-coller) de cette commande, en le limitant à un résultat qui ne te convient pas (à partir de Nom de l'image)
while read f; do echo "Nom de l'image : $f"; grep -ri "$f"; done < <(ls /mnt/data/Documents/Informatique/Blogue/Backup18042016/htdocs/data/images -I 'tb.*')
C'est ta commande en #13, avec un grep légèrement modifié.
Hors ligne
#21 Le 20/04/2016, à 17:15
- antistress
Re : [résolu] Appliquer une même commande à une liste de fichiers
qu'entends tu pas "un résultat qui ne te convient pas" ?
Blogue : Libre et ouvert
Hors ligne
#22 Le 20/04/2016, à 17:23
- pingouinux
Re : [résolu] Appliquer une même commande à une liste de fichiers
Inutile de montrer la totalité du résultat, mais ce qui correspond à un fichier tb.* qui ne devrait pas apparaître.
Hors ligne
#23 Le 20/04/2016, à 18:06
- antistress
Re : [résolu] Appliquer une même commande à une liste de fichiers
par exemple le début du résultat :
[img=http://img11.hostingpics.net/pics/157642terminal.png]Sortie du terminal[/img]
(ne me demande pas pourquoi mais je n'ai plus de copier/coller sur la sortie du terminal!)
Blogue : Libre et ouvert
Hors ligne
#24 Le 20/04/2016, à 18:35
- pingouinux
Re : [résolu] Appliquer une même commande à une liste de fichiers
Si tu ne montres les résultats exacts (copier-coller de la commande et du résultat) des commandes que je te demande de lancer (notamment en #14 et #20), je ne peux pas t'aider.
Je suis désolé…
Hors ligne
#25 Le 20/04/2016, à 22:05
- antistress
Re : [résolu] Appliquer une même commande à une liste de fichiers
Il y a un lien vers une capture d'écran dans mon post précédent
(Je teste GNOME 3.20 avec Wayland, ça doit être la raison qui fait que j'ai pas pu copier/coller)
Dernière modification par antistress (Le 20/04/2016, à 22:57)
Blogue : Libre et ouvert
Hors ligne