Extraire extension d'un fichier
ppierrot
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
Salut,
J'apprends actuellement le shell sous linux et je cherche pour extraire l'extension d'un fichier en shell.
C'est à dire l'exo que j'ai a faire c'est de créer un répertoire pour les fichiers .txt ou .avi de créer le répertoire associé (txt ou avi par exemple) et de les ranger dans leur répertoire associé.
Merci pour l'aide.
J'apprends actuellement le shell sous linux et je cherche pour extraire l'extension d'un fichier en shell.
C'est à dire l'exo que j'ai a faire c'est de créer un répertoire pour les fichiers .txt ou .avi de créer le répertoire associé (txt ou avi par exemple) et de les ranger dans leur répertoire associé.
Merci pour l'aide.
5 réponses
-
Salut tout le monde,
Il me semble que l'on s'est un peu éloigné du sujet, non ?
Si l'on reprend le post initial de "ppierrot", il demande juste de, je cite :
créer un répertoire pour les fichiers .txt ou .avi
la commande "mkdir le_repertoire" me semblerait appropriée, et ensuite, je cite encore :
de les (sous-entendu "les fichiers") ranger dans leur répertoire associé.
un simple "mv *.txt /le_rep_associe" devrait là aussi faire l'affaire.
Le plus dur pour notre ami étant alors de construire son script avec ses tâches correctement agencées...
Mais peut être me trompe-je aussi et de ce fait, veuillez me pardonner.
Z'@+...che.JP : Zen, my Nuggets ! ;-)
fortune: file not found !
-
Salut
Essai ca , ca devrai resoudre ton probleme :
echo fichier.blablab.ext |awk -F "." '{print $NF}' -
Hello :)
Je propose Comme çà :
echo toto.doc.txt | sed 's/.*\.//g'
Dal -
salut
je pense qu'avec la commande cut peut t'aider :
$> echo fichier.ext | cut -f2 -d '.'
par exemple te donne l'extension
voilà, voilà!-
C'est bien mais ca ne marche pas s'il y a un deuxieme "." dans le nom:
"fichier.blablab.ext".
J'ai fais une fois un script en perl pour ca:#!/usr/bin/perl ### Perl program to strip the extension of a file name $filename=$ARGV[0]; @nn=split(/\./,$filename); $filetype=pop(@nn); $name=$nn[0]; for($i=1;$i<=$#nn;$i++){ $name=join('.',$name,$nn[$i]); }; print $name;
Si on appelle ce script strip_ext.pl, le rend executable on peut faire:strip_ext.pl fichier.blabla.dat
et on obtient "fichier.blabla". Dans un shellscript on peut faire:nom_court=`strip_ext.pl $nom_long` echo $nom_court
Mais je concois c'est l'artillerie lourde pour ce probleme. Il y a peut-etre encore mieux ou plus facile.
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bash fournit pas mal d'outils intégrés (pas besoin de se prendre la tête avec sed, awk et PERL) .
johand@horus:~/src/bash$ brol=un.deux.trois johand@horus:~/src/bash$ echo ${brol%.*} un.deux johand@horus:~/src/bash$ echo ${brol%%.*} un
D'accord, ce n'est pas portable à 100% :(
man bash${parameter%word} ${parameter%%word} The word is expanded to produce a pattern just as in pathname expansion. If the pattern matches a trailing portion of the expanded value of parameter, then the result of the expansion is the expanded value of parameter with the shortest matching pat- tern (the ``%'' case) or the longest matching pattern (the ``%%'' case) deleted. If parameter is @ or *, the pattern removal operation is applied to each positional parameter in turn, and the expansion is the resultant list. If parameter is an array variable subscripted with @ or *, the pattern removal operation is applied to each member of the array in turn, and the expansion is the resultant list.
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)