[Linux-31] exclusions dans find

jpcas jpcas at free.fr
Mar 18 Juin 14:52:56 CEST 2013


Le 18/06/2013 14:17, jdd a écrit :
> Le 18/06/2013 13:12, jpcas a écrit :
> 
>> Ben déjà si ce n'est que les répertoires qui doivent être exclus, cibler
>> uniquement les fichiers avec "-type f" ou "! -type d", non ?
> 
> non, c'est juste un exemple sur le plus évident
> 
> jdd
> 

Ben alors il te faut construire à la volée une liste d'après un fichier.
Voilà un exemple :

# L'arborescence (seuls les fichiers "titi" et "toto" sont vides) :
$ tree -Fh
.
├── [  15]  fich
├── [  60]  rep1/
│   └── [   0]  toto
├── [  40]  rep2/
├── [  40]  rep3/
├── [   0]  titi
└── [   8]  tutu

3 directories, 4 files

# Le résultat attendu en omettant les répertoires vides :
$ find . -empty ! -type d
./titi
./rep1/toto

# La syntaxe qu'attend find  pour omettre certains motifs :
$ find . -empty ! \( -name rep2 -o -name rep3 -o -name fich \)
./titi
./rep1/toto

# Le contenu du fichier d'exclusion (fich) :
$ cat fich
rep2
rep3
fich

# La moulinette avec "sed" :
$ find . -empty ! \( -name $(sed ':z;N;$! bz;s/\n/ -o -name /g' fich) \)
./titi
./rep1/toto



Plus d'informations sur la liste de diffusion Linux-31