Pages : 1
#1 Le 15/01/2007, à 18:19
- Vi66cent
[résolu] Help shell script
Bonjour
Je souhaite trouver tout les fichier datant de moins de 30 jour sur une partition et faire pour chacun un lien symbolique qui se trouverais dans un dossier sur mon bureau.
Le début ca donne
find /media/Data/ -type f -mtime -30 -not -name ".*" | sed 's/ /\\ /g'
Après ca j'obiens une liste de fichiers avec leur chemin absolut.
Par exemple :
/media/Data/Dossier/fichier1.txt
/media/Data/Mes\ images/Picture\ 1.jpg
Ensuite je sais pas comment faire pour utiliser
ln -s "chaque ligne du résultat précédent" ~/Desktop/Recent\ items/
Merci d'avance pour votre aide !
Vincent
PS : Désolé pour le titre pas très explicite...
Dernière modification par Vi66cent (Le 15/01/2007, à 22:22)
Hors ligne
#2 Le 15/01/2007, à 18:54
- poum
Re : [résolu] Help shell script
Voir l'option -exec de find qui est faite pour ça.
Par exemple, mais sans l'échappement des espaces:
find /le/repertoire/source -type f -mtime -30 -not -name ".*" -exec ln -s {} ~/le/repertoire/destination \;
on pourra remplacer "ln" par "echo ln" dans un premier temps pour afficher les commandes au lieu de les exécuter.
Dernière modification par poum (Le 15/01/2007, à 19:44)
Because rules matter !
http://philippe.poumaroux.free.fr
Hors ligne
#3 Le 15/01/2007, à 19:24
- Vi66cent
Re : [résolu] Help shell script
Merci, je ne connaissais pas cette option
avec -exec ca donne ca
find /media/Data/ -type f -mtime -30 -not -name ".*" -exec 'ln -s {} ~/Desktop/Recent\ Items' \;
Mais il reste un problème pour les fichiers/dossiers avec des espaces. Dans ma commande précédente je les remplacais par "\ " avec sed mais la je ne vois pas comment faire...
J'ai essayé
find /media/Data/ -type f -mtime -30 -not -name ".*" -exec 'ln -s `echo {} | sed 's/ /\\ /g'` ~/Desktop/Recent\ Items' \;
et
find /media/Data/ -type f -mtime -30 -not -name ".*" -exec 'ln -s $("echo {} | sed 's/ /\\ /g'") ~/Desktop/Recent\ Items' \;
Mais ca fonctionne pas du tout
Dernière modification par Vi66cent (Le 15/01/2007, à 20:01)
Hors ligne
#4 Le 15/01/2007, à 21:40
- Balkoth
Re : [résolu] Help shell script
Bonjour,
Pourquoi avoir mis des apostrophes ? Essaie en les enlevant.
find /media/Data/ -type f -mtime -30 -not -name ".*" -exec ln -s {} ~/Desktop/Recent\ Items \;
Hors ligne
#5 Le 15/01/2007, à 22:22
- Vi66cent
Re : [résolu] Help shell script
Heu...effectivement ca fonctionne très bien sans les ' '
Voilà une bonne chose de faite et j'ai appris plein de truc sur la commande find !
Merci beaucoup !
Hors ligne
Pages : 1