#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;Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.
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