Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/01/2007, à 19: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, à 23:22)

Hors ligne

#2 Le 15/01/2007, à 19: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, à 20:44)


Because rules matter !
http://philippe.poumaroux.free.fr

Hors ligne

#3 Le 15/01/2007, à 20:24

Vi66cent

Re : [résolu] Help shell script

Merci, je ne connaissais pas cette option smile

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 hmm

Dernière modification par Vi66cent (Le 15/01/2007, à 21:01)

Hors ligne

#4 Le 15/01/2007, à 22: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, à 23:22

Vi66cent

Re : [résolu] Help shell script

Heu...effectivement ca fonctionne très bien sans les ' ' smile

Voilà une bonne chose de faite et j'ai appris plein de truc sur la commande find !

Merci beaucoup !

Hors ligne