Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1043 connectés 

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

awk assez complexe

n°1061398
betsamee
Asterisk Zeperyl
Posté le 20-07-2008 à 12:06:56  profilanswer
 

Bonjour
Je suis en train de réaliser un petit script qui scanne un répertoire et détecte les fichiers modifies dans la journée pour les copier autre part.
J'ai ce code
 

Code :
  1. find /usr/local/scripts/* -mtime 0 | awk '{print "cp jesaispasquoifaire "$1}'


 
en gros ce script me renvoie une ligne de la forme suivante:
 
cp jesaispasquoifaire /usr/local/scripts/toto.txt
 
et j'aimerais avoir
 
cp toto.txt /usr/local/scripts/toto.txt
 
vous auriez une idée?


---------------
un blog sur Asterisk
mood
Publicité
Posté le 20-07-2008 à 12:06:56  profilanswer
 

n°1061400
Mjules
Modérateur
Parle dans le vide
Posté le 20-07-2008 à 12:12:47  profilanswer
 

ça ne suffit pas ça ?

 

find /usr/local/scripts/* -mtime 0 -exec cp {} /usr/local/scripts/ \;


Message édité par Mjules le 20-07-2008 à 12:12:52

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
n°1061401
betsamee
Asterisk Zeperyl
Posté le 20-07-2008 à 12:15:54  profilanswer
 

je ne veux pas l'executer j'aimerais afficher cp toto.txt /usr/local/scripts/toto.txt  
 
merci de ton aide


---------------
un blog sur Asterisk
n°1061402
Mjules
Modérateur
Parle dans le vide
Posté le 20-07-2008 à 12:19:33  profilanswer
 

Code :
  1. find /home/jules/telechargement/* -mtime 1 -exec echo "cp {} /usr/local/scripts/{} " \;


 
:??:


Message édité par Mjules le 20-07-2008 à 12:19:58

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
n°1061403
betsamee
Asterisk Zeperyl
Posté le 20-07-2008 à 12:25:10  profilanswer
 

merci mais ca le fait pas  
{} reprend tout le path au lieu du simple nom de fichier


---------------
un blog sur Asterisk
n°1061405
Mjules
Modérateur
Parle dans le vide
Posté le 20-07-2008 à 12:35:41  profilanswer
 

plus tu explicites, moins je comprend ce que tu cherches à faire.
 
tu veux quoi exactement dans ton fichier final ?


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
n°1061406
betsamee
Asterisk Zeperyl
Posté le 20-07-2008 à 12:38:38  profilanswer
 

voila j'ai un répertoire X
je veux , a partir du resultat de mon find qui me retourne les fichiers modifies dans la journee creer la chaine suivante :
"cp nomfichier /X/nomfichier"

 

merci encore


Message édité par betsamee le 20-07-2008 à 12:39:10

---------------
un blog sur Asterisk
n°1061409
Mjules
Modérateur
Parle dans le vide
Posté le 20-07-2008 à 12:41:45  profilanswer
 

chemin complet ne change jamais, n'est ce pas ?

 

dans ce cas, en 2 lignes :

Code :
  1. find /home/jules/telechargement/* -mtime 1 -exec basename {} \;>test
  2. while read ligne; do echo "cp $ligne /chemin/complet/$ligne";done <test >lapin
 

et tes cp se retrouvent dans lapin

 

à améliorer avec mktemp pour générer le fichier temporaire, et il est surement possible de s'en passer.

 

et tu peux remplacer /home/jules/telechargement par une variable que tu réutilises par la suite.


Message édité par Mjules le 20-07-2008 à 12:44:30

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
n°1061410
betsamee
Asterisk Zeperyl
Posté le 20-07-2008 à 12:49:03  profilanswer
 

merci beaucoup ça fonctionne mais pour un chemin complet connu
 
le souci c'est qu'il peut m être inconnu (si par exemple un fichier est retrouve dans un sous répertoire)


---------------
un blog sur Asterisk
n°1061416
Mjules
Modérateur
Parle dans le vide
Posté le 20-07-2008 à 13:17:17  profilanswer
 

sir le dossier X est connu, alors ça ça peut marcher :

find /home/jules/telechargement/* -exec echo {} \;|cut -d"/" -f5-255 >test
while read ligne; do echo "cp $ligne /chemin/complet/$ligne";done <test >lapin



---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
mood
Publicité
Posté le 20-07-2008 à 13:17:17  profilanswer
 

n°1061417
Mjules
Modérateur
Parle dans le vide
Posté le 20-07-2008 à 13:21:13  profilanswer
 

je suis fatigué le dimanche matin :

cd /le/dossier/
find * -exec echo "cp {} $PWD/{}" \;>le_fichier

 

EDIT : tu remplaces $PWD par ce que tu veux.


Message édité par Mjules le 20-07-2008 à 13:23:55

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
n°1061419
betsamee
Asterisk Zeperyl
Posté le 20-07-2008 à 13:23:52  profilanswer
 

 :jap:


---------------
un blog sur Asterisk
n°1061553
betsamee
Asterisk Zeperyl
Posté le 21-07-2008 à 08:55:18  profilanswer
 

je crois que cette solution est meilleure :

Code :
  1. find /usr/local/scripts/* -mtime 0 | awk 'BEGIN{FS="/"}{print "cp " $NF " "$0}'


 
merci quand meme


---------------
un blog sur Asterisk
n°1061569
betsamee
Asterisk Zeperyl
Posté le 21-07-2008 à 09:39:04  profilanswer
 

j'ai par contre un autre souci
quand mon script scanne un repertoire avec trop de fichiers il me sort ca :
modifs_du_jour.sh: line 11: /usr/bin/find: Liste d'arguments trop longue
 
quelqu'un aurait une idee de comment contourner ce souci (recurrent)


---------------
un blog sur Asterisk
n°1061597
franceso
Posté le 21-07-2008 à 10:27:39  profilanswer
 

c'est à cause du méta-caractère '*' qui génère trop d'arguments pour le shell.
 
un simple

find /usr/local/scripts/ -mtime 0 | awk 'BEGIN{FS="/"}{print "cp " $NF " "$0}'

ne fait pas ce que tu veux ?


---------------
TriScale innov
n°1061604
betsamee
Asterisk Zeperyl
Posté le 21-07-2008 à 10:55:52  profilanswer
 

c'est bon!
:jap:


---------------
un blog sur Asterisk
n°1063437
betsamee
Asterisk Zeperyl
Posté le 31-07-2008 à 10:03:45  profilanswer
 

grâce a vous j'ai pu réaliser ce petit script de synchronisation de répertoires sur deux serveurs différents :jap:
 
http://sambranche.blogspot.com/200 [...] on-de.html


---------------
un blog sur Asterisk
n°1063571
weed
Posté le 31-07-2008 à 16:42:01  profilanswer
 

sympa de donner le lien et de proposer ....
post très enrichissant, j'avais quelques trous de mémoire sur awk :)

n°1063581
Mjules
Modérateur
Parle dans le vide
Posté le 31-07-2008 à 17:17:42  profilanswer
 

pourquoi tu n'as pas utilisé un outil comme rsync qui est fait pour ça (couplé à dirvish si tu veux garder un historique sur plusieurs jours) ?


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
n°1063616
betsamee
Asterisk Zeperyl
Posté le 31-07-2008 à 19:30:14  profilanswer
 

oui je me rend compte que j ai une peu reinvente la poudre :/


---------------
un blog sur Asterisk
n°1063639
weed
Posté le 31-07-2008 à 22:33:39  profilanswer
 

oui je me suis posé la question mais d'un autre coté c'est très formateur ...

n°1063814
chaica
Posté le 01-08-2008 à 16:00:26  profilanswer
 

rsync rulez da world

n°1063832
Nirzil
Posté le 01-08-2008 à 16:48:16  profilanswer
 

betsamee a écrit :

grâce a vous j'ai pu réaliser ce petit script de synchronisation de répertoires sur deux serveurs différents :jap:
 
http://sambranche.blogspot.com/200 [...] on-de.html


 
Merci :jap:

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
 

Sujets relatifs
suppression à la volée un peu complexeProblème complexe pour moi, help plz
FreeS/Wan un peu complexe for me ... Help me ... 
Plus de sujets relatifs à : awk assez complexe


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR