Rev 42 | Blame | Compare with Previous | Last modification | View Log | RSS feed
#! /usr/bin/env elixir# https://rosettacode.org/wiki/Walk_a_directory/Recursively# =============================================================================# Create# name : Andre Rikkert de Koe date: Mar 2018# descr : filefind# This is a demo of programming in the Elixir language.# Its part of a project to implement a program to create a directory# tree similar to the output of the Unix find program.# EUID : Any user who has read access to all the files being searched for.# run : interactive## Changes# name : date:# descr : short description## =============================================================================# =============================================================================# Functions# =============================================================================defmodule DezeModule dodef usage(progname, mesg) doIO.puts "Usage: " <> progname <> " filefind"IO.puts mesgenddef traverse(directory) docurdir = System.cwd()File.cd!(directory)curdir2 = System.cwd()files = File.ls!(directory)for file <- files dopfile = curdir2 <> "/" <> fileIO.puts pfileif File.dir?(pfile) dotraverse(pfile)endendFile.cd!(curdir)enddef start_traverse(directory) doIO.puts directorytraverse(directory)endend# =============================================================================# Main# =============================================================================progname = System.cwd()if length(System.argv) == 1 dodirectory = Enum.at(System.argv(), 0)if File.dir?(directory)doDezeModule.start_traverse(directory)elseDezeModule.usage(progname, "ERROR: Not a directory : " <> directory)endelseDezeModule.usage(progname, "ERROR: 1 argument expected")end