[FIND] pwd de la recherche

pwd de la recherche [FIND] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 20-05-2008 à 11:03:56    

Bonjour  
 
Je cherche la variable que est positionné au pwd courant de la recherche.
Je m'explique:
 
J'ai une archi,
/plop
/plop/archi1/archi2
/plop/archi3
/plop/archi4
/plop/archi1/archi2/test.txt
 
En gros je veux trouvé le fichier test.txt et le copier là ou il se trouve (le tout en partant de /plop)
 

Code :
  1. find /plop -name "test.txt" -exec cp {} ???PWD???/test.copy \;


 
Merci de votre aide

Message cité 1 fois
Message édité par plag le 20-05-2008 à 11:06:02
Reply

Marsh Posté le 20-05-2008 à 11:03:56   

Reply

Marsh Posté le 20-05-2008 à 11:23:52    

Reply

Marsh Posté le 20-05-2008 à 11:36:44    

find /plop -name "test.txt" -exec cp {} $(dirname {})/test.copy \;
 
Un truc du genre ?
Je n'ai pas de de linux pour tester là

Reply

Marsh Posté le 20-05-2008 à 11:46:12    

plag a écrit :

En gros je veux trouvé le fichier test.txt et le copier là ou il se trouve (le tout en partant de /plop)

Si j'ai bien compris ce que tu veux, execdir devrait faire l'affaire :

find /plop -name "test.txt" -execdir cp {} test.copy \;


 
 

plag a écrit :

find /plop -name "test.txt" -exec cp {} $(dirname {})/test.copy \;
 
Un truc du genre ?
Je n'ai pas de de linux pour tester là

Ca ne marche pas parce que le $(dirname) est interprété directement par le shell au moment où tu lances la commande.
 
 


---------------
TriScale innov
Reply

Marsh Posté le 20-05-2008 à 11:48:06    

Comment tu fais pour que le 'dirname' ne soit interprété qu'au moment de la résolution du '-exec' et pas directement par le shell ?


---------------
TriScale innov
Reply

Marsh Posté le 20-05-2008 à 12:02:20    

Re, je viens de tester  

Code :
  1. [user@machine ~]# find /plop  -name "test.txt" -execdir cp {} test.copy \;
  2. find: invalid predicate `-execdir'
  3. [user@machine ~]# find --version
  4. GNU find version 4.1


Il y a une façon old school ?

Reply

Marsh Posté le 20-05-2008 à 13:03:30    

find /plop -name "test.txt" -exec sh -c 'cp {} `dirname {}`' \;


Edit : hmm ouais en fait apparement t'es pas sous linux, et avec certaines version de find ça va pas marcher parce qu'il n'interprètent pas les {} dans la chaine (genre sous AIX).

Message cité 1 fois
Message édité par matafan le 20-05-2008 à 13:07:19
Reply

Marsh Posté le 20-05-2008 à 13:07:32    

find /plop -name "test.txt" -exec sh -c 'cp {} $(dirname {})/test.copy' \;
 
Merci \o/

Reply

Marsh Posté le 20-05-2008 à 13:40:06    

matafan a écrit :

find /plop -name "test.txt" -exec sh -c 'cp {} `dirname {}`' \;


Edit : hmm ouais en fait apparement t'es pas sous linux, et avec certaines version de find ça va pas marcher parce qu'il n'interprètent pas les {} dans la chaine (genre sous AIX).

:jap:
je connaissais pas la méthode d'encapsulation dans un autre shell
 
 
 
EDIT: concernant l'interprétation des {} dans la chaine, peut-être qu'on peut s'en sortir comme ça :

find /plop -name "test.txt" -exec sh -c 'cp "$1" `dirname "$1"`' cp {} \;


Message édité par franceso le 20-05-2008 à 13:47:01

---------------
TriScale innov
Reply

Sujets relatifs:

Leave a Replay

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