#1 Le 15/05/2011, à 09:51
- jilucorg
[RÉSOLU] Débutant sur 'find' : problème de syntaxe avec -prune
Bonjour,
Pour un petit script bash de copie de sauvegarde automatisée – et pour apprendre à me servir de find par la même occasion – voilà un bon moment que je consulte en vain tout ce que je trouve (le man, ce forum, googling de sites divers en français et en anglais) afin de comprendre comment faire pour que find exclue de sa recherche le sous-répertoire ('Archive') du répertoire :
/media/sda2/Program Files (x86)/Programme_boulot
où sont les fichiers que je veux sauvegarder (et dont le numéro change), de la forme :
mon_nom - Base Programme_boulot 2011 - 30.npr
Mais je n'arrive pas à ce que -prune fasse ça, et je ne comprends pas pourquoi.
Selon mes différentes tentatives, j'obtiens
soit tous les fichiers du sous-répertoire 'Archive' en plus de ceux qui m'intéressent,
soit rien, soit une sortie d'erreur du type :
find: les chemins doivent précéder l'expression : Archive
soit :
/media/sda2/Program Files (x86)/Programme_boulot/Archive
/media/sda2/Program Files (x86)/Programme_boulot/mon_nom - Base Programme_boulot 2011 - 30.npr
/media/sda2/Program Files (x86)/Programme_boulot/mon_nom - Base Programme_boulot 2011 - 31.npr
Pour avoir tout ça, j'ai essayé des variantes de cette commande-ci :
find "/media/sda2/Program Files (x86)/Programme_boulot/" -name Archive -prune -o -name 'mon_nom*npr'
J'ai essayé, pour Archive, avec et sans "", avec et sans un ou deux /, en changeant la place respective dans la commande d'à peu près tout ... nada !
Bien sûr, si au lieu de -prune j'utilise
! -wholename "*Archive*"
ça marche parfaitement, mais j'ai compris que c'est mal : tout le monde semble dire avec mépris que ce n'est pas la solution appropriée pour exclure des répertoires, que c'est plus lent, qu'il est beaucoup mieux d'utiliser -prune qui est fait pour ça etc., alors je viens faire appel à l'honorable assemblée
[J'utilise pour l'instant un petit script activé par cron qui fonctionne très bien aussi :
#!/bin/bash
cd "/media/sda2/Program Files (x86)/Programme_boulot/
cp -pf mon_nom*npr /media/backup/sauv_windows/Boulot
mais c'est tout sauf élégant, d'où ma recherche.]
Toute aide "niveau débutant" pour me faire comprendre mon erreur et m'aider à progresser un peu dans ce domaine sera bienvenue...
Dernière modification par jilucorg (Le 15/05/2011, à 11:10)
jiluc.
––
Pour soutenir concrètement le logiciel libre : l'April ! http://www.april.org
Hors ligne
#2 Le 15/05/2011, à 10:53
- Watael
Re : [RÉSOLU] Débutant sur 'find' : problème de syntaxe avec -prune
Salut
l'ordre des instructions est important
find '/media/sda2/Program Files (x86)/Programme_boulot/' -path '/media/sda2/Program Files (x86)/Programme_boulot/Archive' -prune -o -name 'mon_nom*npr' -print
et le man conseille d'utiliser -path
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 15/05/2011, à 11:09
- jilucorg
Re : [RÉSOLU] Débutant sur 'find' : problème de syntaxe avec -prune
l'ordre des instructions est important
find '/media/sda2/Program Files (x86)/Programme_boulot/' -path '/media/sda2/Program Files (x86)/Programme_boulot/Archive' -prune -o -name 'mon_nom*npr' -print
et le man conseille d'utiliser -path
Super, merci beaucoup !
Donc je retiens qu'il faut faire :
find '/chemin du répertoire de recherche/' -path '/chemin du répertoire à exclure' -prune -o -name 'motif' -print
Impeccable, je vais pouvoir continuer à avancer
jiluc.
––
Pour soutenir concrètement le logiciel libre : l'April ! http://www.april.org
Hors ligne