FILES := $(wildcard *.txt) $(wildcard */*.txt) $(wildcard */*/*.txt) all: setup test setup: echo "root file1" > file1.txt mkdir -p sub1 echo "sub1 file2" > sub1/file2.txt echo "sub1 file3" > sub1/file3.txt mkdir -p sub2 echo "sub2 file4" > sub2/file4.txt echo "sub2 file5" > sub2/file5.txt test: make print_files print_files: $(FILES) cat $(FILES)