Shell linux, commande find
Résolu
chris79
Messages postés
97
Date d'inscription
Statut
Membre
Dernière intervention
-
chris79 Messages postés 97 Date d'inscription Statut Membre Dernière intervention -
chris79 Messages postés 97 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je possède un répertoire "source" contenant plusieurs répertoires et plusieurs fichiers.
Je dois copier ce répertoire ailleurs dans "dest" à l'exception de
- certains sous-répertoires #cas 1
- certains fichiers #cas 2
- tout le contenu de certains sous-répertoires (en gros je garde le répertoire vide :-) #cas 3
Pour illustrer par un exemple pas du tout (mais alors pas du tout) optimisé :
> cp -R source dest
> rm -r dest/include/ #cas1
> rm dest/<fichier quelconque # cas 2
> rm -r dest/coco/bidule/* #cas 3
Je sais que je peux le faire avec la commande find ??????? -exec rm -r {} (quelque chose comme ça :-) mais je n'y arrive pas, il y a rien à faire :-(, j'ai même bloquer mon pc, plus de clavier... !
Alors si quelqu'un maitrise cette commande ô combien puissante, j'attends son commentaire avec impatience.
Sinon une solution avec un bon vieux "grep -v" me paraitrait moins "optimale" (quoique) mais serait la bienvenue également.
Merci.
Je possède un répertoire "source" contenant plusieurs répertoires et plusieurs fichiers.
Je dois copier ce répertoire ailleurs dans "dest" à l'exception de
- certains sous-répertoires #cas 1
- certains fichiers #cas 2
- tout le contenu de certains sous-répertoires (en gros je garde le répertoire vide :-) #cas 3
Pour illustrer par un exemple pas du tout (mais alors pas du tout) optimisé :
> cp -R source dest
> rm -r dest/include/ #cas1
> rm dest/<fichier quelconque # cas 2
> rm -r dest/coco/bidule/* #cas 3
Je sais que je peux le faire avec la commande find ??????? -exec rm -r {} (quelque chose comme ça :-) mais je n'y arrive pas, il y a rien à faire :-(, j'ai même bloquer mon pc, plus de clavier... !
Alors si quelqu'un maitrise cette commande ô combien puissante, j'attends son commentaire avec impatience.
Sinon une solution avec un bon vieux "grep -v" me paraitrait moins "optimale" (quoique) mais serait la bienvenue également.
Merci.
A voir également:
- Shell find
- Classic shell - Télécharger - Personnalisation
- Find and mount - Télécharger - Récupération de données
- Ava find - Télécharger - Divers Utilitaires
- Shell addition ✓ - Forum Shell
- Find junk files - Télécharger - Nettoyage
6 réponses
bonsoir,
je ne suis pas un pro du bash loin de la ...
mais il me semble que pour le cas 1 tu peux faire
cp $(ls |sed -e '/nomdurepignoré/*/d')
pour le 2
cp $(ls |sed -e '/nomdufichier*/d')
pour le 3 hmmm
en esperant que ca t'aide ...
je ne suis pas un pro du bash loin de la ...
mais il me semble que pour le cas 1 tu peux faire
cp $(ls |sed -e '/nomdurepignoré/*/d')
pour le 2
cp $(ls |sed -e '/nomdufichier*/d')
pour le 3 hmmm
en esperant que ca t'aide ...
Salut,
Sur une seule commande ce n'est pas possible, et à la limite, ta solution est sûrement ce qui irait le mieux.
Il faut surtout prendre en compte si ce que tu veux faire est une tâche isolée (à ne faire qu'une fois) ou une tâche répétitive.
Si ce n'est qu'une seule fois, ta méthode reste la plus optimisée.
Si répétition, voir alors avec des commandes comme "rsync" ou "tar" qui incluent des paramètres permettant d'exclure des répertoires et des fichiers lors du traitement.
La commande "find" pour ce genre de chose reste assez lourde, surtout la syntaxe de l'option "-prune" pour omettre des répertoires et/ou fichiers..
Sur une seule commande ce n'est pas possible, et à la limite, ta solution est sûrement ce qui irait le mieux.
Il faut surtout prendre en compte si ce que tu veux faire est une tâche isolée (à ne faire qu'une fois) ou une tâche répétitive.
Si ce n'est qu'une seule fois, ta méthode reste la plus optimisée.
Si répétition, voir alors avec des commandes comme "rsync" ou "tar" qui incluent des paramètres permettant d'exclure des répertoires et des fichiers lors du traitement.
La commande "find" pour ce genre de chose reste assez lourde, surtout la syntaxe de l'option "-prune" pour omettre des répertoires et/ou fichiers..
C'est effectivement une tache répétitive destinée à être exécutée dans un script.
Pis surtout, mon répertoire source fait environ 400 Mo alors que le répertoire dest, une fois nettoyé, fait environ 20 Mo !! Alors copier 380 Mo pour les effacer la ligne suivante...je ne trouve pas cela terrible :-).
Par contre une solution à base de "tar" me parait intéressante....je vais voir cela plus en détail.
Dans tous les cas, merci !
Pis surtout, mon répertoire source fait environ 400 Mo alors que le répertoire dest, une fois nettoyé, fait environ 20 Mo !! Alors copier 380 Mo pour les effacer la ligne suivante...je ne trouve pas cela terrible :-).
Par contre une solution à base de "tar" me parait intéressante....je vais voir cela plus en détail.
Dans tous les cas, merci !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Elle n'est pas mauvaise, c'est juste que ce qu'il veut faire est assez biscornu, et si on commence à se lancer dans des commandes comme celles citées plus haut, il n'est pas arrivé ;-\
A partir du moment où il existe des commandes ou des programmes implémentant nativement les besoins recherchés, pas la peine de se casser la tête à chercher (ou juste pour se faire plaisir alors) des solutions quelque peu tordues, non ?
A partir du moment où il existe des commandes ou des programmes implémentant nativement les besoins recherchés, pas la peine de se casser la tête à chercher (ou juste pour se faire plaisir alors) des solutions quelque peu tordues, non ?
Je te tiens au courant.
Merci.