Faites un script en Shell du nom de typefiledir avec un nombre variable de paramètres qui sont
des répertoires existants dans le répertoire courant
=> dans ton script $@ représente tous les arguments, donc ici tous les répertoires, de $1 à $n.
=> "shift" décrémente tous les indices, $1 est perdu, $2 devient $1, $3 devient $2... $n devient $n-1
=> tu peux donc en bouclant sur shift et en consultant $1 accéder à tous les arguments, un par un
. Pour chacun des répertoires nommés, votre
script doit vérifier (avec le programme file) chacun des fichiers
=> tu peux utiliser find -type f DIR pour sortir tous les fichiers du répertoire. Si tu ne veux pas de récursion, on peut limiter la profondeur de find avec -mindepth et -maxdepth
, et s%u2019il trouve des fichiers dont le
type est dans la liste suivante, il doit ajouter le suffixe correspondant au nom de fichier (on
suppose que les fichiers n%u2019ont pas encore de suffixe) ou effectuer l%u2019action qui est indiquée.
=> file -b et mv devrait suffire
Si les
répertoires contiennent des sous-répertoires, votre script n%u2019a pas à parcourir ces sous-répertoires
mais simplement ajouter le suffixe .dir après le nom du répertoire.
=> le sujet se contredit, c'était écrit qu'on devait vérifier chacun des fichiers, mais bon... Pour les répertoires, un find -type d suffira
Voici la liste des types de fichiers à identifier et leurs actions ou suffixes à ajouter au nom de
fichier : Bourne-Again shell (suffixe .sh), tar (suffixe .tar), zip (suffixe .zip), ASCII text (suffixe
.txt), JPEG (suffixe .jpg), PDF (suffixe .pdf), PostScript (suffixe .ps), code HTML (suffixe
.html), format compress (action de uncompress sur le fichier), gzip (action de gunzip sur le
fichier)
Pour ton histoire d'itérer sur la sortie de file *, tu devrais plutôt itérér sur les fichiers et appeler find sur chacun d'entre eux
Si vraiment tu tiens à ton file *, on peut imaginer un
file * | while read toto; do # parcours des lignes une par une gauche="`echo "$toto" | cut -d ':' -f 1`" # coupe la ligne sur :, garde le premier champ droite="`echo "$toto" | cut -d ':' -f 2`" # idem mais champ 2 echo "Le fichier $gauche est de type $droite" done |
Message édité par Xavier_OM le 14-02-2007 à 17:27:54
---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.