tester l'extension d'un fichier sous unix

tester l'extension d'un fichier sous unix - Multimédia - Linux et OS Alternatifs

Marsh Posté le 04-06-2002 à 12:33:24    

:jap:  :jap:  :jap: je ne me rappelle plus de la syntaxe exacte,
il me semble que c'est if test -name $i -eq *.sql
ca marche pas, quelqu'un peut me dire ou est l'erreur ca m'evitera de chercher dans mes cours et tps.
Merci  
 
 :jap:  :jap:


---------------
boulet officiel:goueg
Reply

Marsh Posté le 04-06-2002 à 12:33:24   

Reply

Marsh Posté le 04-06-2002 à 12:44:10    

moi je ferais :
 

Code :
  1. if test ${i##*.} = "sql"; then do_something; fi

Reply

Marsh Posté le 04-06-2002 à 13:22:46    

minusplus a écrit a écrit :

moi je ferais :
 

Code :
  1. if test ${i##*.} = "sql"; then do_something; fi

 




 
merci ca marche.
 :hello:  :hello:  :hello:  :hello:


---------------
boulet officiel:goueg
Reply

Marsh Posté le 04-06-2002 à 13:29:25    

minusplus a écrit a écrit :

moi je ferais :
 

Code :
  1. if test ${i##*.} = "sql"; then do_something; fi

 




 
-/+  faut que tu m'expliques le 'test'
 
'comprend rien à l'expression ;)  
 
'i' pour insensible à la casse ?
*.  quelconque avant le .  
mais le '#' ???


---------------
c'est etonnant comme on peut se passer de l'essentiel du moment qu'on a les petits plaisirs de la vie
Reply

Marsh Posté le 04-06-2002 à 13:36:09    

parameter expansion : man bash ! :D  
c super pratik mais personne l'utilise jamais !  

Code :
  1. ${parameter#word}
  2.        ${parameter##word}
  3.               The word is expanded to produce a pattern  just  as
  4.               in  pathname expansion.  If the pattern matches the
  5.               beginning of  the  value  of  parameter,  then  the
  6.               result  of  the  expansion is the expanded value of
  7.               parameter with the shortest matching  pattern  (the
  8.               ``#''  case)  or  the longest matching pattern (the
  9.               ``##'' case) deleted.  If parameter is @ or *,  the
  10.               pattern  removal operation is applied to each posi�
  11.               tional parameter in turn, and the expansion is  the
  12.               resultant  list.  If parameter is an array variable
  13.               subscripted with @ or *, the pattern removal opera�
  14.               tion  is  applied  to  each  member of the array in
  15.               turn, and the expansion is the resultant list.
  16.        ${parameter%word}
  17.        ${parameter%%word}
  18.               The word is expanded to produce a pattern  just  as
  19.               in  pathname  expansion.   If the pattern matches a
  20.               trailing portion of the expanded value  of  parame�
  21.               ter,  then  the  result  of  the  expansion  is the
  22.               expanded  value  of  parameter  with  the  shortest
  23.               matching  pattern  (the  ``%'' case) or the longest
  24.               matching pattern (the  ``%%''  case)  deleted.   If
  25.               parameter  is @ or *, the pattern removal operation
  26.               is applied to each positional  parameter  in  turn,
  27.               and the expansion is the resultant list.  If param�
  28.               eter is an array variable subscripted with @ or  *,
  29.               the  pattern  removal  operation is applied to each
  30.               member of the array in turn, and the  expansion  is
  31.               the resultant list.

Reply

Marsh Posté le 04-06-2002 à 13:37:40    

en français : $(i##*.) renvoie $i auquel on a coupé la plus longue partie (à partir du début) possible correspondant à l'expression "*."

Reply

Marsh Posté le 04-06-2002 à 13:42:38    

donc faut recuperer $i pour travailler dessus ?


---------------
c'est etonnant comme on peut se passer de l'essentiel du moment qu'on a les petits plaisirs de la vie
Reply

Marsh Posté le 04-06-2002 à 13:48:13    

Poltergeist a écrit a écrit :

donc faut recuperer $i pour travailler dessus ?  




:??: komprend pas...
 
exemple :  

Code :
  1. for i in *
  2. do
  3.   if test ${i##*.} = 'sql'
  4.   then
  5.     do_truc()
  6.   elif test ${i##*.} = 'gnagna'
  7.     do_machin()
  8.   fi
  9. done

Reply

Marsh Posté le 04-06-2002 à 13:53:11    

minusplus a écrit a écrit :

 
:??: komprend pas...
 
exemple :  

Code :
  1. for i in *
  2. do
  3.   if test ${i##*.} = 'sql'
  4.   then
  5.     do_truc()
  6.   elif test ${i##*.} = 'gnagna'
  7.     do_machin()
  8.   fi
  9. done

 




 
ben texto :  
 
en français : $(i##*.) renvoie $i auquel on a coupé la plus longue partie (à partir du début) possible correspondant à l'expression "*."
 
je cherche surtout à m'affranchir de lourdes expressions regulieres (parce que meme si c'est puissant c'est assez lourd à gérer ;) )


---------------
c'est etonnant comme on peut se passer de l'essentiel du moment qu'on a les petits plaisirs de la vie
Reply

Marsh Posté le 04-06-2002 à 13:57:44    

bah t'emmerdes pas , je vais potasser dessus ;)


---------------
c'est etonnant comme on peut se passer de l'essentiel du moment qu'on a les petits plaisirs de la vie
Reply

Marsh Posté le 04-06-2002 à 13:57:44   

Reply

Marsh Posté le 04-06-2002 à 14:02:19    

Poltergeist a écrit a écrit :

 
 
ben texto :  
 
en français : $(i##*.) renvoie $i auquel on a coupé la plus longue partie (à partir du début) possible correspondant à l'expression "*."
 
je cherche surtout à m'affranchir de lourdes expressions regulieres (parce que meme si c'est puissant c'est assez lourd à gérer ;) )  




bash (enfin sh) ne fait pas nativement les regexp à la perl. tout ce qu'il fait c'est du pattern matching sur les noms de fichiers koi (les habituels *, ?, [azer] etc.)
mais bon, sur des pb un peu plus kompliké t vite obligé de passer au perl (au sed au pire)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed