#Haskell
import System.Directory
main :: IO ()
main = do
files1 <- listDirectory "/path1"
files2 <- listDirectory "/path2"
let missingFiles = filter (`notElem` files2) files1
mapM_ putStrLn missingFiles
#Scheme
#lang racket
(define path1-files (directory-list "/path1"))
(define path2-files (directory-list "/path2"))
(for-each (lambda (f)
(unless (member f path2-files) (displayln f)))
path1-files)
#Prolog
list_missing_files :-
directory_files('/path1', Files1),
directory_files('/path2', Files2),
subtract(Files1, Files2, MissingFiles),
print_list(MissingFiles).
print_list([]).
print_list([H|T]) :-
write(H), nl, print_list(T).
#Erlang
-module(missing_files).
-export([list/0]).
list() ->
Files1 = filelib:wildcard("/path1/*"),
Files2 = filelib:wildcard("/path2/*"),
MissingFiles = Files1 -- Files2,
lists:foreach(fun(File) -> io:format("~p~n", [File]) end, MissingFiles).
#Lisp
(let ((files1 (directory "/path1/*.*"))
(files2 (directory "/path2/*.*")))
(dolist (f files1)
(unless (member f files2 :test #'string=)
(print f))))
#Forth
: list-files ( addr1 addr2 -- )
\ Here, you'd write a series of words that
\ 1. Enumerate files in addr1
\ 2. For each file in addr1, check if it exists in addr2
\ 3. Print out the file if it doesn't exist in addr2
;
"/path1" "/path2" list-files