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 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)

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.

En 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 !

Hors ligne

#4 Le 19/04/2016, à 05:10

pingouinux

Re : [résolu] Appliquer une même commande à une liste de fichiers

Bonjour,

antistress a écrit :

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

Hors ligne

#6 Le 19/04/2016, à 12:51

pingouinux

Re : [résolu] Appliquer une même commande à une liste de fichiers

antistress a écrit :

À 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) ?

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)

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

Hors ligne

#12 Le 20/04/2016, à 09:39

pingouinux

Re : [résolu] Appliquer une même commande à une liste de fichiers

antistress a écrit :

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.*')

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

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

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 smile

Dernière modification par antistress (Le 20/04/2016, à 16:30)

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" ?

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!)

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é… sad

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 wink

(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)

Hors ligne