
Envoyé par
RyuAutodidacte
Pour le 1er code :
il fait bien son travail mais il ne met pas correctement la séparation sur les 2 1ère extensions
Tu n'a pas fais attention au prérequis: si tu utilises GNU awk
Le problème rencontré est certainement la conséquence d'une version de awk qui ne dispose pas des extensions GNU.
C'est pour ça que j'ai ajouté une version shell qui n'a pas besoin de GNU puisqu'on est dans le forum POSIX.
Pour le 2ème code :
Ce type de code est pour l'instant un peu trop compliqué pour que j'en comprenne tous le sens, c'es tout nouveau pour moi
quelques explications seraient un plus
Voilà le même code commenté:
for V in "PRIJAM DU TERME_0001" "TESS DES BEAUX_003" "UNIVERS DE LA FAYE_0002" "Newtext" ; do
printf "%s: " "$V" # On affiche le nom du fichier sans extension et sans retour à la ligne
extensions=$( # La variable "extensions" va contenir le résultat de la commande qui suit, contenue dans le bloc entre parenthèses
find /Users/KAB/Desktop/DeveloppezCom/Renommage/Images -name "${V}.*" -exec sh -c '
# On appelle le script shell suivant en lui passant en paramètre tous les fichiers correspondant au nom et avec une extension quelconque
sep="" # La variable sep (séparateur) est initialisée avec une chaine vide car il n'y a pas de séparateur avant le premier élément de la liste
for i do # On boucle sur chaque extension (équivalent de "for i in "$@"; do" )
printf "%s%s" "$sep" "${i##*.}"
# On affiche le séparateur suivi de l'extension: ${i##*.} affiche le contenu de la variable i duquel on a retiré tout jusqu'au dernier "."
sep=" | " # S'il y a plus d'un extension, le séparateur " | " sera utilisé
done' sh {} + # On passe tous les noms de fichiers trouvés en paramètre du script shell
)
[ "$extensions" ] && printf "%s\n" "$extensions" || printf "le fichier n'existe pas\n"
# Si la variable "extensions" n'est pas vide, on l'affiche, sinon, on affiche le message qui va bien
done
Partager