Rechercher : dans
Par :

Extraire extension d'un fichier

Dernière réponse le 21 nov 2004 à 15:42:15 ppierrot, le 19 nov 2004 à 12:20:39 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « extraire extension d'un fichier » dans :
Extraire le son d'une vidéo VoirVous avez un fichier vidéo dont vous voulez récupérer la bande-son ? Extraire en WAV avec VLC Pour ce faire, il faut d'abord récupérer VLC Media Player à l'adresse suivante : Télécharger VLC Puis, après installation : 1. Menu Fichier =>...
Associer une application à une extension de fichiers VoirAfficher toutes les extensions de fichiers Par défaut, Windows XP masque les extensions dont le type est connu. Pour afficher toutes les extensions : Dans le Poste de travail ou l'explorateur Windows, cliquer sur le menu "Outils" et choisir...
[Logiciels] Extraire toutes les images d'un PDF VoirVoici comment extraire toutes les images d'un fichier PDF. Avantage de cette méthode sur http://www.commentcamarche.net/faq/sujet-1036-: Les images sont extraites tel quel, sans perte de qualité (Par exemple, les JPEG sont extraits tel quel du...
Formats et extensions de fichiers VoirRemarque : La liste ci-dessous n'est pas exhaustive et certains noms d'extension peuvent avoir plusieures fonctionnalités. Quant aux programmes proposés pour utiliser ces fichiers, ils ne sont pas forcément les seuls, ni les plus...
Fichier GZ VoirFormat GZ Un fichier GZ (abbréviation de Gzip) est un fichier compressé. Comment lire un fichier GZ ? Pour décompresser un fichier GZ (ou un fichier .TAR.GZ), il suffit d'utiliser un des logiciels suivants : 7zip IceOWS PoweGZchiver iZarc TugZip

1

arkyx, le 19 nov 2004 à 13:05:03

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à!

Répondre à arkyx

2

kmf, le 19 nov 2004 à 14:08:05

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.

Répondre à kmf

3

Alin, le 19 nov 2004 à 14:31:27

Salut

Essai ca , ca devrai resoudre ton probleme :

echo fichier.blablab.ext |awk -F "." '{print $NF}'

Répondre à Alin

4

[Dal], le 19 nov 2004 à 14:33:01

Hello :)

Je propose Comme çà :

echo toto.doc.txt | sed 's/.*\.//g'


Dal

Répondre à [Dal]

5

jisisv, le 19 nov 2004 à 18:24:09

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)

Répondre à jisisv

6

jipicy, le 21 nov 2004 à 15:26:25

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 !

Répondre à jipicy

7

 kmf, le 21 nov 2004 à 15:42:15

Salut,

Moi, j'ai encore appris quelque chose de nouveau des postes apres le mien.
Encore merci pour les auteurs!
C'est exactement le genre d'astuces qui sont vraiement utils et quand ne trouve dans aucune doc ou extrement cache (au milieu des mille pages de man pour la bash shell).

Répondre à kmf