Question

J'essaie d'écrire un script ruby ??simple qui copie un fichier dans les sous-répertoires immédiats d'un répertoire. Comment pourrais-je obtenir uniquement les sous-répertoires immédiats?

Était-ce utile?

La solution

Dir.glob ("** /") renverra un tableau de tous les chemins situés sous le répertoire en cours. À partir de là, vous pouvez filtrer la liste et copier un fichier avec Fichier.copie (de, vers)

.

Autres conseils

En supposant que vous ne vouliez que les sous-répertoires immédiat , vous pouvez utiliser Dir ['* /'] (qui combine les réponses de Micheal Sepcot et de glenra).

Si vous voulez trouver tous les sous-répertoires immédiats (juste un niveau en dessous de l'endroit où vous vous trouvez), essayez ceci:

Dir.chdir("/some/path/you/want/to/check/below")
subdir_list=Dir["*"].reject{|o| not File.directory?(o)}

C’est-à-dire: changez de répertoire, construisez un tableau de fichiers, rejetez les éléments de tableau qui ne sont pas des répertoires et retournez le tableau cullé résultant.

La meilleure façon de traiter les fichiers dans Ruby est probablement Chemin . Il combine les méthodes de classe de quelques modules basés sur des fichiers dans une classe OOP conviviale. Il n'est donc pas nécessaire de transmettre la valeur à une méthode comme avec Dir ou Fichier , vous pouvez simplement appeler la méthode sur l'objet lui-même.

Voici comment imprimer des sous-répertoires immédiats:

require 'pathname'

puts Pathname('some/directory').children.select(&:directory?)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top