Ma p'tite contribution perso

Contact

Monday 07 July 2025

yarel scripts shell

clickez sur les titres pour voir ou cacher le script

Remplace un caractère par un autres à tous les fichiers passés en argument.
J'ai fait ce script à cause de l'appareil photo de ma fille qui nomme les images "date#numero" le "#" empêchant l'affichage de l'image dans ma galerie php.
#! /bin/sh
#############################################################
#auteur : yarel.contrib@tiscali.fr
#remplace un caractere, d'un nom de fichier, par un autre
#ou
#plusieurs caracteres mais il faut le même nbr de caractère
#(ie: à remplacer et remplaçant)
#############################################################

nbrremplacer=0 #nombre de nom de fichier remplacer
echo -n "entrer le caractère à remplacer : "
read carorigine
#si pas de car à remplacer =exit
if [ -z $carorigine ] ; then
echo " vous devez entrer un caractère à remplacer"
exit 0
fi
echo -n "entre le caractère de remplacement : "
read newcar
#pour chaque nom de fichier passé en argument
for i in $@; do
#pour le caractère "#" qui oblige à mettre des crochets autour
if [ "$carorigine" = "#" ] ; then
newnom=${i/[$carorigine]/$newcar} #remplace dans '"i" "carorigine" par "newcar"
else
newnom=${i/$carorigine/$newcar}
fi
if [ -a $newnom ] ; then #si le nom obtenu est le même que celui du fichier (ie:remplacement déjà effectué)
mess=("pas de remplacement")
echo $newnom
continue;
else
mv $i $newnom #remplace
: $((nbrtotal+=nbrremplacer+1)) #incrémente le compteur de fichiers remplacés
mess=("il y a "$nbrtotal" fichiers remplacés")
fi
done
echo $mess #le résultat
Réduit une ou plusieurs images. un pourcentage de réduction est demandé. utilise "ImageMagik"
#!/bin/sh
#####################################################
#auteur : yarel.contrib@tiscali.fr
#convertie la taille des images passées en parametre
#(img.jpg ou *.jpg)
#nécessite ImageMagik
#####################################################

echo -n "tapez le pourcentage de réduction "
read pourcentage
#si pas de % d'indiquer par default 50%
if [ -z $pourcentage ] ; then
pourcentage=50
fi
for i in $@;do
convert -resize $pourcentage% $i $i
echo "img " $i "convertie a" $pourcentage "%"
done
Cherche une chaine de caractère dans une ou plusieurs fichiers passés en argument. Je l'utilise, entre autre, pour lister toute les fonctions de tous les fichiers d'un dossier de sources.
#!/bin/sh
############################################
#auteur yarel.contrib@tiscali.fr
#affiche les lignes des fichiers contenant
#la chaine 'chaine'
############################################

echo -n " entrer la chaine à rechercher "
read chaine
#chaine vide ?
if [ -z $chaine ] ; then
echo " la chaine ne peut pas être vide"
exit 0
fi
for i in $@; do
#echo -n " je cherche : " $chaine " dans le fichier " $@
grep $chaine $@
done
Permet d'afficher les noms des fonctions et leurs commentaires de tous les fichiers (php4) passés en argument. Voir les indications de formatage des commentaires dans le script.
#!/bin/sh
###################################################################
#auteur yarel.contrib@tiscali.fr
#affiche le commentaire et la fonction qui lui correspond
#ainsi que ceux des fichiers inclus & des variables de classe(php4)
#     il faut que les commentaires soit au format
#     /*******************
#     * ligne de
#     * commentaire
#      *******************/
###################################################################

for i in $@;do
grep '\(*.\)\|\(function.\)\|\(var .\)\|\(include.\)' $i
done

recherche des fichiers doublons à partir du dossier passé en argument.
#/bin/sh
################
#auteur: yarel.contrib@tiscali.fr
# recherche des fichiers doublons à partir du dossier passé en argument
# parcour les sous-repertoires
# pour chaque fichier (ne suis pas les liens)
# recherche des fichiers du même nom dans tous les autres répertoires connu par "locate"
# puis compare la somme MD5 des fichiers trouvés à celui du répertoire courant
# déterminant ainsi les "vrai" doublons des "homonymes"
# ecrit le résultat dans un fichier texte
#NOTE
# Il est utile de lancer la commande (sous root) "updatedb" avant de lancer
# le script la première fois ce qui permet de mettre à jour la bd utilisée par "locate"
#
# si vous exécutez le script plusieurs fois, le résultat est rajouté au fichier
################

#ici mettez le chemin jusqu'au fichier où le résultat sera écrit (il sera créer à la première exécution)
#par défault: "/home/vous/doublons.txt"
LOG=$HOME"/doublons.txt"
NBRREP=0
NBRFICHIER=0
NBRDOUBLON=0
NBRREPDOUB=0
#liste tous les fichiers réguliers du rep
function liste_fichier
{
declare -a tabr
for fichier in * ;
do
#filtre
if [ -f "$fichier" ] ; then
#sortie console
echo " fichier -" $fichier
#compteur de fichier
NBRFICHIER=$((NBRFICHIER + 1))
#recherche les doublons (ligne(=chemin complet) finissant par "/nomdufichier")
#remplace(temporairement=pour remplir le tableau) les espaces par des ";"
tabr=(`locate -r "/$fichier$" | tr ' ' ';'`)
#le nbr d'élément
nbr_item=${#tabr[@]}
#mise en forme si + d'une ligne renvoyée par "locate..."
if [ "$nbr_item" -gt 1 ] ; then
#somme md5 (cut=pour récuperer le premier champs avant l'espace)
summd5=`md5sum "$PWD/$fichier" | cut -d ' ' -f 1`
echo " RÉFÉRENCE : " "$summd5 : " "$PWD/$fichier" >> $LOG
fi
#boucle de lecture du tableau
for r in "${tabr[@]}"; do
#remplace les ";" par de espaces
trX=${r//";"/" "}
#si une seule ligne = à la référence (ie: le nom du fichier dans le rep courant)
if [ "$PWD/$fichier" = "$trX" ] || [ "$nbr_item" = 1 ]; then
continue
else
#il y a des doublons ?
sumdoub=`md5sum "$trX" | cut -d ' ' -f 1`
#compare la somme MD5 à celle des autres fichier du même nom
if [ "$summd5" = "$sumdoub" ] ; then
#c'est un vrai doublon
echo " Doublon : " "$sumdoub : " "$trX" >> $LOG
#le nbr de doublon dans le rep
NBRREPDOUB=$((NBRREPDOUB + 1))
#le nbr total de doublon dans tous les reps
NBRDOUBLON=$((NBRDOUBLON + 1))
else
#même nom mais pas même somme MD5
echo " Homonyme : " "$sumdoub : " "$trX" >> $LOG
fi
fi
done
fi
done
#pluriel
if [ $NBRREPDOUB -gt 1 ] ; then
pluriel="doublons"
else
pluriel="doublon"
fi
echo "------> il y a : " $NBRREPDOUB " $pluriel" >> $LOG
}
#explore les repertoires récursivement
function explore_rep
{
local f
#nombre total de repertoire
NBRREP=$((NBRREP + 1))
#sortie console
echo "$1"
#pour faire "bo" ;-)
echo "" >> $LOG
#mise en forme du fichier de sortie
if [ $NBRREP = 1 ] || [ $NBRREPDOUB -gt 0 ]; then
echo "REPERTOIRE : " $1 >> $LOG
elif [ $NBRREP -gt 1 ] || [ $NBRREPDOUB -gt 0 ]; then
echo "REPERTOIRE : " $PWD"/"$1 >> $LOG
fi
#si pas de rep stop
if ! cd "$1" ; then return ; fi
#remise à zero du compteur interne de doublon
NBRREPDOUB=0
#parcour le contenu de répertoire
liste_fichier $1
#lister les sous-rep
for f in * ; do
#sauter les liens symboliques
if [ -L "$f" ] ; then
continue
fi
#sous rep
if [ -d "$f" ] ; then
#on recommence avec le sous-rep
explore_rep "$f"
fi
done
#remonter
cd ..
}

#main
#format le fichier de sortie
echo "####### - Le : " $(date +%c) " - ################" >> $LOG
echo "# RACINE : " $1 >> $LOG
echo "#############################################" >> $LOG
explore_rep "$1"
#sortie console
echo "Fin de la recherche "
echo $NBRREP " REPERTOIRE EXPLORÉS"
echo $NBRFICHIER " FICHIERS RECHERCHÉS"
echo $NBRDOUBLON " DOUBLONS TROUVÉS"
#stats fichier
echo "########### - STATS - ################" >> $LOG
echo $NBRREP " REPERTOIRES EXPLORÉS" >> $LOG
echo $NBRFICHIER " FICHIERS RECHERCHÉS" >> $LOG
echo $NBRDOUBLON " DOUBLONS TROUVÉS" >> $LOG
echo "###########################################################" >> $LOG


Télécharger l'archive : yarel-scripts

Page Précédente