25 votes

Comment devrais-je glob pour tous les fichiers cachés ?

Je veux effectuer une action (disons chown) sur tous les fichiers cachés dans un répertoire.

Je sais que .* n'est pas une bonne idée car cela trouvera également les répertoires actuel . et parent .. (je sais que rm échouera à opérer sur . et .. mais d'autres commandes, y compris chown et chmod, prendront effet joyeusement)

Mais tous mes fichiers cachés ont des noms différents!

Comment devrais-je faire un glob pour tous les fichiers cachés en excluant . et .. ?

23voto

Rinzwind Points 270388

En Bash, utilisez :

GLOBIGNORE=".:.."

pour masquer les répertoires . et ... Cela définit également l'option dotglob : * correspond à la fois aux fichiers cachés et non cachés.

Vous pouvez également faire :

shopt -s dotglob

Gilles :)

21voto

heemayl Points 85741

Vous pouvez utiliser le modèle extglob suivant :

.@(!(.|))
  • . correspond à un . littéral en premier

  • @() est un modèle extglob, il correspondra à l'un des modèles à l'intérieur, comme nous n'avons qu'un modèle à l'intérieur, il choisir celui-ci

  • !(.|) est un autre modèle extglob (imbriqué), qui correspond à tout fichier sans ou avec un .; Comme nous avons déjà matché . au début, ce modèle correspondra à tous les fichiers commençant par . sauf . et ...

extglob est activé par défaut dans les sessions interactives de bash sous Ubuntu. Sinon, activez-le d'abord :

shopt -s extglob

Exemple :

$ echo .@(!(.|))
.bar .foo .spam

10voto

Wayne_Yux Points 4743

Vous pouvez utiliser une commande find ici. Par exemple quelque chose comme

find -type f -name ".*" -exec chmod 775 {} \;

Cela permettra de trouver les fichiers cachés et de modifier les autorisations


Edit pour inclure le commentaire de @gerrit:

find -type f -maxdepth 1 -name ".*" -exec chmod 775 {} \;

Cela limitera la recherche au répertoire actuel au lieu de rechercher récursivement.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X