J'essaye d'écrire un script shell qui affiche le nombre de fichiers dans le répertoire courant dont le type est ASCII text ou UTF-8 Unicode text.
L'idée est d'utiliser la commande shell "file" qui affiche le type de fichier qui est passé en argument, puis tester si je trouve dans le résultat (sous forme de chaîne) la sous-chaîne (soit "ASCII" ou bien "UTF-8").
J'ai écrit un petit code mais ça ne marche pas, je suis sûr que je me trompe au niveau de recherche de la sous-chaine, mais je ne vois pas une alternative pour mieux s'exprimer.
Je vous laisse voir mon code :
#!/bin/bash
ascii=0
latex=0
for file in `file *`
do
echo $file
if [ $file -eq *"ASCII"* ]
then
$ascii = $ascii + 1
else
$latex = $latex + 1
fi
done
echo "Il y a $ascii fichier ASCII et $latex fichier LATEX dans ce répértoire"
J'ai penser à utiliser case de la manière suivante, malheureusement ça ne marche pas aussi.
case "$file" in
*"ASCII*) $ascii = $ascii + 1 ;;
*"UTF-8*) $latex = $latex + 1 ;;
*) echo "Element différent d'ASCII et de LATEX" ;;
esac
Une petite question de plus, est ce que dans mon cas, ça serais plus pratique de parcourir les éléments avec une boucle while qu'avec une boucle for ?
Merci pour le temps que vous avez pris pour lire mon post et pour vos futures réponses.
#!/bin/bash
declare -i utf ascii
path='./'
for f in "$path"/*
do
test -f "$f" && \
case $(file -b --mime-encoding "$f") in
utf-8) utf+=1;;
*ascii) ascii+=1;;
esac
done
printf 'utf: %d\nascii: %d\n' $utf $ascii
- Edité par dantonq 8 novembre 2018 à 14:56:30
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Concevoir un script en shell
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique