Ich versuche, in Groovy alle Dateien rekursiv aufzulisten, die zu einem bestimmten Dateityp passen. This example macht es fast. Die Dateien im Stammordner werden jedoch nicht aufgelistet. Gibt es eine Möglichkeit, dies zu ändern, um Dateien im Stammordner aufzulisten? Oder gibt es einen anderen Weg, es zu tun?Rekursive Auflistung aller Dateien, die einem bestimmten Dateityp in Groovy entsprechen
29
A
Antwort
69
Dies sollte Ihr Problem lösen:
import static groovy.io.FileType.FILES
new File('.').eachFileRecurse(FILES) {
if(it.name.endsWith('.groovy')) {
println it
}
}
eachFileRecurse
nimmt einen ENUM Dateityp, der, dass Sie in nur Dateien interessiert sind spezifiziert. Der Rest des Problems wird einfach gelöst, indem der Name der Datei gefiltert wird. Könnte erwähnen, dass eachFileRecurse
normalerweise über Dateien und Ordner recursiert, während eachDirRecurse
nur Ordner findet.
3
ersetzen eachDirRecurse
von eachFileRecurse
und es sollte funktionieren.
3
// Define closure
def result
findTxtFileClos = {
it.eachDir(findTxtFileClos);
it.eachFileMatch(~/.*.txt/) {file ->
result += "${file.absolutePath}\n"
}
}
// Apply closure
findTxtFileClos(new File("."))
println result
7
groovy Version 2.4.7:
new File(pathToFolder).traverse(type: groovy.io.FileType.FILES) { it ->
println it
}
können Sie auch Filter wie
new File(parentPath).traverse(type: groovy.io.FileType.FILES, nameFilter: ~/patternRegex/) { it ->
println it
}
Verwandte Themen
- 1. Rekursive Auflistung
- 2. Liste aller Anwendungen, die einen bestimmten Dateityp verarbeiten
- 3. Auflistung aller Objekte einer bestimmten Klasse
- 4. Auflistung aller Inhalte eines Ordners in tfs
- 5. Auflistung aller Indizes
- 6. Auflistung aller Freunde
- 7. Rekursive Ctags für nur einen Dateityp
- 8. Auflistung aller Muster, die eine Regex entspricht
- 9. Ein Lookup aller Werte, die einem Datum entsprechen
- 10. Prevent rsync von Zieldateien löschen, die einem bestimmten Muster entsprechen
- 11. Auswählen von Zeitspalten, die einem bestimmten Datum entsprechen
- 12. Auflistung aller Ländercodes von Telefonnummern
- 13. Auflistung aller Verzeichnisse und Dateien in einem Unterverzeichnis funktioniert nicht - Python
- 14. Verwendung von Meld als difftool für git, aber Auflistung aller Dateien in einem Fenster
- 15. Auflistung aller verfügbaren Systemschriftarten in einer Auswahlbox
- 16. Auflistung aller Tabellen in einer Datenbank
- 17. Wie konvertiert man alle Dateien (in verschiedenen Formaten) in einem bestimmten Ordner in einen anderen Dateityp
- 18. Anzeige aller Dateinamen aus einem bestimmten Ordner
- 19. Drucken aller Palindromzahlen in einem bestimmten Bereich
- 20. Postgres nur Elemente auswählen, die zu einem bestimmten entsprechen gesetzt
- 21. Android: Liste aller Dateien eines bestimmten Typs
- 22. Wie bekomme ich eine Liste aller Klassen, die bestimmten Protokollen in XCode 4 entsprechen?
- 23. jede Funktion für die Dateien, die alle in einem Ordner in VB6 eines bestimmten Typs Auflistung aus
- 24. jSoup Whitelist Tags, die bestimmten Klassenmustern entsprechen?
- 25. Anzeigen bestimmter Datensätze, die bestimmten Kriterien entsprechen.
- 26. Schließen aller geöffneten Dateien in einem Prozess
- 27. Unterschiedliches Farbschema in einem Dateityp
- 28. SQL Eine Auflistung aller Spaltennamen alphabetisch
- 29. Rekursive Hydratation aller verwandten Objekte in Propel
- 30. Nennen Sie die Namen aller Dateien/Ordner in einem Array
Ihr Snippet hinzufügen wird die gleiche Datei mehrmals finden. Damit es funktioniert, müssen Sie stattdessen jedesDirRecurse verwenden und für jedes Verzeichnis mit dir.eachFileMatch die Dateien im Verzeichnis suchen. Überprüfen Sie meine Lösung auf eine andere Möglichkeit, das Problem zu lösen. – xlson
neuer Ansatz ... –