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/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 roll ... 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 smile

[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... smile

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

Watael a écrit :

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 smile


  jiluc.
––
             Pour soutenir concrètement le logiciel libre : l'April !    http://www.april.org

Hors ligne