fouiller l'arborescence

Le
dadou
Bonjour à tou{te}s,

Je voudrais faire un traitement sur un ensemble de fichiers
de même type et même extension (JPG par exemple) contenus dans
des répertoires, sous-répertoires, sous-sous-rep., etc

la commande suivante agit sur les fichiers JPG du répertoire
courant :
«
for a in *JPG ; do convert -geometry 800x800 "$a" "${a%.JPG}.jpg" ; done
»
mais comment atteindre tous les JPG de l'arborescence ?

Arboricolement,
Didier.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Francois Lafont
Le #25213272
Bonjour,

Le 09/02/2013 15:11, dadou a écrit :

Je voudrais faire un traitement sur un ensemble de fichiers
de même type et même extension (JPG par exemple) contenus dans
des répertoires, sous-répertoires, sous-sous-rep., etc

la commande suivante agit sur les fichiers JPG du répertoire
courant :
«
for a in *JPG ; do convert -geometry 800x800 "$a" "${a%.JPG}.jpg" ; done
»
mais comment atteindre tous les JPG de l'arborescence ?



Je pense que dans ce cas là, il faut utiliser la commande find. Je te
propose ceci :

#-------------------------------------------------
#!/bin/bash

REP="/ton/repertoire/de/recherche/"

traitement ()
{
for f in "$@"; do
echo "---Traitement de $f---"
# Là tu mets ton code pour le traitement
# du fichier "$f".
done
}

# On exporte la fonction.
export -f traitement

find "$REP" -name '*.JPG' -exec bash -c 'traitement "$@"' arg0 '{}' +
#-------------------------------------------------

Je crois bien que même avec des noms de fichiers « exotiques » ça
tiendra le coup.


--
François Lafont
Nicolas Richard
Le #25213312
dadou
Bonjour à tou{te}s,

Je voudrais faire un traitement sur un ensemble de fichiers
de même type et même extension (JPG par exemple) contenus dans
des répertoires, sous-répertoires, sous-sous-rep., etc

la commande suivante agit sur les fichiers JPG du répertoire
courant :
«
for a in *JPG ; do convert -geometry 800x800 "$a" "${a%.JPG}.jpg" ; done
»
mais comment atteindre tous les JPG de l'arborescence ?



Avec bash:
shopt -s globstar
for a in ./**/*JPG; do convert -geometry 800x800 "$a" "${a%.JPG}.jpg" ; do ne

et optionnellement pour désactiver:
shopt -u globstar

(Je ne connaissais pas l'option globstar ce matin : quand on vient
d'apprendre un truc on veut absolument le partager... je suis sûr qu'on
me corrigera s'il y a mieux)

--
Nico.
Doug713705
Le #25213932
Le 09-02-2013, dadou nous expliquait dans fr.comp.os.linux.configuration :

Bonjour à tou{te}s,

Je voudrais faire un traitement sur un ensemble de fichiers
de même type et même extension (JPG par exemple) contenus dans
des répertoires, sous-répertoires, sous-sous-rep., etc

la commande suivante agit sur les fichiers JPG du répertoire
courant :

for a in *JPG ; do convert -geometry 800x800 "$a" "${a%.JPG}.jpg" ; done
»
mais comment atteindre tous les JPG de l'arborescence ?



Si j'ai bien compris :

find /home/mon/rep/images/ -type f -name *.JPG -exec convert -geometry
800x800 {} {}.jpg

--
Doug - Linux user #307925 - Slackware64 roulaize ;-)
Without freedom of choice there is no creativity.
-- Kirk, "The return of the Archons", stardate 3157.4
Publicité
Poster une réponse
Anonyme