Если вам нужна зависимость от количества файлов, то ... почему бы просто не зависеть от самого числа ? Номер будет представлен как фиктивный файл, который создается, когда указанный номер файла находится в каталоге documents
.
NUMBER=$(shell ls documents/*.txt | wc -l).files
# This yields name like 2.files, 3.files, etc...
# .PHONY $(NUMBER) -- NOT a phony target!
$(NUMBER):
rm *.files # Remove previous trigger
touch $(NUMBER)
index.txt: $(NUMBER)
...generate index.txt...
Хотя количество файлов - это одно свойство для отслеживания, вместо этого вы можете зависеть от хеша списка каталогов. Маловероятно, что хеш-функция будет одинаковой для двух списков, которые встречаются в вашем рабочем процессе. Вот пример:
NUMBER=$(shell ls -l documents/*.txt | md5sum | sed 's/[[:space:]].*//').files
Заметьте, используя -l
- таким образом, вы будете зависеть от полного списка файлов, который включает время модификации, размеры и имена файлов. Но если вам это не нужно, вы можете отказаться от этой опции.
Примечание: sed
был необходим, потому что в моей системе md5sum
дает некоторые вещи после самой хеш-суммы.