Ist es möglich, einen Glob zu erstellen, der Dateien im aktuellen Verzeichnis und allen Unterverzeichnissen abgleicht?
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
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