Subversion Repositories svn.Prod repos

Rev

Blame | Last modification | View Log | RSS feed

  1. #!/usr/bin/env groovy
  2.  
  3. // ============================================================================
  4. // Create
  5. // name  : Andre Rikkert de Koe with ChatGPT         date:   Jul 2026
  6. // descr : filefind
  7. //         Groovy implementation of the original Pascal filefind program.
  8. //
  9. // run   : interactive
  10. //
  11. // ============================================================================
  12.  
  13. def progname = new File(args ? args[0] : 'filefind').name
  14.  
  15. // ============================================================================
  16. // Functions
  17. // ============================================================================
  18.  
  19. def usage = { String message ->
  20.     println "Usage: ${progname} directory"
  21.     println message
  22. }
  23.  
  24. def traverse
  25.  
  26. traverse = { File directory ->
  27.     directory.eachFile { File file ->
  28.         println file.absolutePath
  29.  
  30.         if (file.isDirectory()) {
  31.             traverse(file)
  32.         }
  33.     }
  34. }
  35.  
  36. def startTraverse = { File directory ->
  37.     println directory.absolutePath
  38.     traverse(directory)
  39. }
  40.  
  41. // ============================================================================
  42. // Main
  43. // ============================================================================
  44.  
  45. if (args.size() == 1) {
  46.     File directory = new File(args[0])
  47.  
  48.     if (directory.isDirectory()) {
  49.         startTraverse(directory)
  50.     } else {
  51.         usage("ERROR: Not a directory : ${args[0]}")
  52.     }
  53. } else {
  54.     usage("ERROR: 1 argument expected")
  55. }
  56.