Vérifiez si le répertoire est vide en Ruby
Comment puis-je vérifier si un répertoire est vide ou n'est pas en Ruby? Est-il quelque chose comme:
Dir.exists?("directory")
(Je sais que cette fonction n'existe pas.)
- J'aimerais voir une méthode appelée "Dir.vide?"
- 5 ans plus tard, votre souhait a venir vrai
- Soit ce ou de la preuve de l'existence des ondes gravitationnelles est la meilleure chose en 2016.
Vous devez vous connecter pour publier un commentaire.
Ruby a maintenant
Dir.vide?
, faisant de ce trivial:En Rubis avant 2.4.0 vous pouvez juste obtenir une liste des entrées et de voir par vous-même si oui ou non il est vide (comptabilité pour les "." et ".."). Voir les docs.
Mise à jour: la première méthode ci-dessus, l'habitude d'utiliser une regex; maintenant, il n'est pas (évidemment). Les commentaires ci-dessous s'applique principalement à l'ancienne (regex) version.
...
est un nom de fichier valide (comme c'est....
, ...), je pense que vous seriez mieux avec un explicitex == '.' || x == '..'
vérifier que votre regex. Vrai,...
est un cas pathologique, mais qui dit exactement ce que tu veux dire, c'est une bonne idée.Vous pouvez utiliser des entrées pour voir tous les fichiers et dossiers dans un répertoire:
Vous pouvez également rechercher des fichiers à l'aide de glob:
Dir.glob('directory/*')
va laisser de côté les fichiers qui commencent par.
, par exemple.profile
ou.git
.Comme des Rubis 2.4.0, il est Dir.est-il vide?
Un répertoire vide ne doit avoir que deux liens (. et ..). Sur OSX cela fonctionne:
...mais ne fonctionne pas sur Linux ou Cygwin. (Merci @DamianNowak) l'Adaptation de Pan réponse:
devrait fonctionner.
nlink
vérifie nombre de sous-répertoires, ce qui est faux.size
doit être vérifié.Pas simple, mais fonctionne parfaitement sous *nix genre de systèmes.
Voici mon modèle pour celui-ci.Pour info , je suis à la recherche d'un certain match de fichiers à l'intérieur de la source.
laissez-moi savoir si quelque chose 🙂