[BASH] Exclure un fichier ou dossier
Résolu/Fermé
Yoan
Messages postés
11795
Date d'inscription
mardi 1 février 2005
Statut
Modérateur
Dernière intervention
10 décembre 2023
-
22 juin 2010 à 18:59
josephtux - 12 févr. 2016 à 16:44
josephtux - 12 févr. 2016 à 16:44
A voir également:
- [BASH] Exclure un fichier ou dossier
- Fichier rar - Guide
- Fichier host - Guide
- Fichier iso - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
6 réponses
il existe une solution très simple :
Man de bash :
donc d'abord taper
Man de bash :
If the extglob shell option is enabled using the shopt builtin, several
extended pattern matching operators are recognized. In the following
description, a pattern-list is a list of one or more patterns separated
by a |. Composite patterns may be formed using one or more of the fol?
lowing sub-patterns:
?(pattern-list)
Matches zero or one occurrence of the given patterns
*(pattern-list)
Matches zero or more occurrences of the given patterns
+(pattern-list)
Matches one or more occurrences of the given patterns
@(pattern-list)
Matches one of the given patterns
!(pattern-list)
Matches anything except one of the given patterns
donc d'abord taper
shopt -s extglobpour activer ensuite on peut écrire :
cp !(*.txt) /media/sauvegardequi copiera tout sauf les fichiers .txt
ripat_
Messages postés
60
Date d'inscription
lundi 31 mai 2010
Statut
Membre
Dernière intervention
29 juillet 2010
6
22 juin 2010 à 19:07
22 juin 2010 à 19:07
Directement avec la commande cp en une seule passe sans script, je ne vois pas mais par contre rsync le permet avec l'option --exclude.
Rsync est, du reste, très utile pour la copie, synchroniqation ou mirroring.
Rsync est, du reste, très utile pour la copie, synchroniqation ou mirroring.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 894
22 juin 2010 à 19:23
22 juin 2010 à 19:23
Salut Yoan,
Oui c'est clair que directement depuis la commande "cp" c'est râpé ;-((
Après sans "rsync", il te faudra passer par des moulinettes avec soit la commande "find" et son option "-prune", soit via des pipes avec "grep -v" couplé à "xargs"...
Oui c'est clair que directement depuis la commande "cp" c'est râpé ;-((
Après sans "rsync", il te faudra passer par des moulinettes avec soit la commande "find" et son option "-prune", soit via des pipes avec "grep -v" couplé à "xargs"...
Yoan
Messages postés
11795
Date d'inscription
mardi 1 février 2005
Statut
Modérateur
Dernière intervention
10 décembre 2023
2 327
22 juin 2010 à 19:24
22 juin 2010 à 19:24
Mais c'est pas spécialement pour copier, je voudrais pouvoir exclure des fichiers à * dans le cas général :)
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 894
22 juin 2010 à 19:25
22 juin 2010 à 19:25
Faut filtrer avec des pipes et grep -v alors (ou passer par find) ;-(
Yoan
Messages postés
11795
Date d'inscription
mardi 1 février 2005
Statut
Modérateur
Dernière intervention
10 décembre 2023
2 327
22 juin 2010 à 20:22
22 juin 2010 à 20:22
OK, dommage, j'aurais voulu un symbole miracle :)
Merci
Merci
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 894
22 juin 2010 à 20:32
22 juin 2010 à 20:32
Au cas ou...
find . \( -name toto.txt -prune \) -o \( -name "*.txt" -print \) -exec cp {} rep/ \;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
Modifié par qqchquicommenceparQ le 22/06/2010 à 21:47
Modifié par qqchquicommenceparQ le 22/06/2010 à 21:47
on peut utiliser les Motifs génériques
genre pour lister les fichiers (y compris les répertoires) du répertoire courant qui ne commence pas par q ou Q
genre pour lister les fichiers (y compris les répertoires) du répertoire courant qui ne commence pas par q ou Q
printf '%s\n' !([qQ]*)
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 894
23 juin 2010 à 07:40
23 juin 2010 à 07:40
Le problème c'est que c'est bon pour exclure un caractère ou plusieurs, mais séparément (sans tenir compte de leur place dans le motif), pas pour un nom complet, ou alors en se lançant dans une regex infernale ;-((
Utilisateur anonyme
Modifié par jipicy le 23/06/2010 à 09:51
Modifié par jipicy le 23/06/2010 à 09:51
heu, non.J'ai des fichiers log de wget, si je fais
printf '%s\n' !(wget*)j'ai la liste de tous mes fichiers et répertoires sauf ceux qui commence par wget. Je pourrais exclure tous les log
printf '%s\n' !(*log)les logs n'apparaissent plus, mais je vois bien mon fichier Topologie
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 894
23 juin 2010 à 09:55
23 juin 2010 à 09:55
Ah oui ;-\
Merci ;-))
Merci ;-))