Vous êtes sur la page 1sur 3

Akoubri Nada / 3 IIR – G5

1) Objectif du script renommext :

#!/bin/bash

if [ "$#" -lt 3 ]; then


echo "Usage: renommext <old_extension> <new_extension> <file_pattern>"
exit 1
fi

old_ext="$1"
new_ext="$2"
file_pattern="$3"

for file in $file_pattern; do


if [ -f "$file" ]; then
ext="${file##*.}"
if [ "$ext" = "$old_ext" ]; then
new_file="${file%.*}.$new_ext"
mv "$file" "$new_file"
echo "Renamed $file to $new_file"
fi
fi
done
2) Analyse et réalisation du script :
b) Paramètres du script - cas simple :
i. $1= "$old_extension".
$2="$new_extension".
$3="$file_name".
ii.
#!/bin/bash

if [ "$#" -lt 3 ]; then


echo "Usage: renommext <old_extension> <new_extension> <file_pattern>"
exit 1
fi

old_ext="$1"
ew_ext="$2"
file_pattern="$3"

for file in $file_pattern; do


if [ -f "$file" ]; then
ext="${file##*.}"
if [ "$ext" = "$old_ext" ]; then

new_file="${file%.*}.$new_ext"
mv "$file" "$new_file"
echo "Renamed $file to $new_file"
fi
fi
done

iii.
#!/bin/bash

# Vérification des nombres de paramètres


if [ $# -lt 3 ]; then
echo "Usage: renommext ancienne_extension nouvelle_extension nom_fichier"
exit 1
fi

# Récupération des paramètres :


ancext=$1 # Ancienne extension
nouvext=$2 # Nouvelle extension
nomfichier=$3 # Nom du fichier

iv.
#!/bin/bash

# Vérifier le nombre de paramètres


if [ $# -lt 3 ]; then
echo "Usage: renommext ancienne_extension nouvelle_extension nom_fichier"
exit 1
fi

# Récupérer les paramètres


ancext=$1 # Ancienne extension
nouvext=$2 # Nouvelle extension
nomfichier=$3 # Nom du fichier

# Vérifier si le fichier existe


if [ ! -f "$nomfichier" ]; then
echo "Le fichier $nomfichier n'existe pas."
exit 1
fi
c) Paramètres du script - cas complet :
i. le script reçoit cette liste en tant qu'arguments. Il ne voit pas directement le joker *, mais
plutôt la liste des fichiers qui correspondent à ce motif.
ii.
for fichier in "${@:3}"; do
# Traitement du fichier
done
iii.
for fichier in "${@:3}"; do
nomfichier="${fichier%.*}" # Nom du fichier sans extension
nouveau_nom="${nomfichier}$nouvext" # Nouveau nom du fichier avec la nouvelle
extension

if [ -f "$fichier" ]; then # Vérifie si le fichier existe


mv "$fichier" "$nouveau_nom" # Renomme le fichier
echo "Le fichier $fichier a été renommé en $nouveau_nom"
else
echo "Le fichier $fichier n'existe pas"
fi

done

d) Amélioration du script : éviter certaines erreurs :

i.
for fichier in "${@:3}"; do
nomfichier="${fichier%.*}" # Nom du fichier sans extension
nouveau_nom="${nomfichier}$nouvext" # Nouveau nom du fichier avec la
nouvelle extension

if [ -f "$fichier" ]; then # Vérifie si le fichier existe


if [ -f "$nouveau_nom" ]; then # Vérifie si le nouveau nom existe déjà
echo "Erreur : Le fichier $nouveau_nom existe déjà, impossible de renommer
$fichier"
else
mv "$fichier" "$nouveau_nom" # Renomme le fichier
echo "Le fichier $fichier a été renommé en $nouveau_nom"
fi
else
echo "Le fichier $fichier n'existe pas"
fi
done
ii.
Si on exécute la commande renommext .c .txt fich.lst, le script risque de renommer
le fichier fich.lst en fich.txt, ce qui ne correspond pas à l'extension spécifiée dans la
commande.
 Pour avertir l'utilisateur de cette erreur et empêcher qu'elle se produise :
for fichier in "${@:3}"; do
if [[ "$fichier" == *"$ancext" ]]; then # Vérifie si l'extension du fichier
correspond à $ancext
nomfichier="${fichier%.*}" # Nom du fichier sans extension
nouveau_nom="${nomfichier}$nouvext" # Nouveau nom du fichier
avec la nouvelle extension

if [ -f "$fichier" ]; then # Vérifie si le fichier existe


if [ -f "$nouveau_nom" ]; then # Vérifie si le nouveau nom existe
déjà
echo "Erreur : Le fichier $nouveau_nom existe déjà, impossible de
renommer $fichier"
else
mv "$fichier" "$nouveau_nom" # Renomme le fichier
echo "Le fichier $fichier a été renommé en $nouveau_nom"
fi
else
echo "Le fichier $fichier n'existe pas"
fi
else
echo "Erreur : Le fichier $fichier ne porte pas l'extension $ancext"
fi
done

Vous aimerez peut-être aussi