Ist es möglich, einen Glob zu erstellen, der Dateien im aktuellen Verzeichnis und allen Unterverzeichnissen abgleicht?

StackOverflow https://stackoverflow.com/questions/44481

  •  09-06-2019
  •  | 
  •  

Frage

Für diese Verzeichnisstruktur:

.
|-- README.txt
|-- firstlevel.rb
`-- lib
    |-- models
    |   |-- foo
    |   |   `-- fourthlevel.rb
    |   `-- thirdlevel.rb
    `-- secondlevel.rb

3 directories, 5 files

Der Globus würde passen:

firstlevel.rb 
lib/secondlevel.rb 
lib/models/thirdlevel.rb
lib/models/foo/fourthlevel.rb
War es hilfreich?

Lösung

Entschuldigung, wenn ich den eigentlichen Sinn der Frage übersehen habe, aber wenn ich sh/bash/etc. verwenden würde, würde ich wahrscheinlich verwenden finden den Job erledigen:

find . -name '*.rb' -type f

Globs können etwas unangenehm werden, wenn sie innerhalb eines Skripts verwendet werden finden ist viel flexibler.

Andere Tipps

In zsh, **/*.rb funktioniert

In Ruby selbst:

Dir.glob('**/*.rb') perhaps?

Sieht so aus, als wäre das nicht möglich bash

Wenn Sie verwenden zsh Dann

ls **/*.rb

wird das richtige Ergebnis liefern.

Andernfalls können Sie das kapern ruby Dolmetscher (und wahrscheinlich auch Dolmetscher anderer Sprachen)

ruby -e "puts Dir.glob('**/*.rb')"

Vielen Dank an Chris und Gaius für Ihre Antworten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top