Мне не совсем понятен ваш вопрос. Но вы говорите в комментарии:
Я уже перехватил список файлов с помощью рекурсивной команды dir и перенаправил его в текстовый файл. Я хочу заменить все имена файлов на * и поместить его в переменную, чтобы составить список зависимостей.
От этого это не так уж сложно. Предположим, ваш текстовый файл foo.txt
:
C:/subfolder/subfolder/subfolder/dsfsdfs_files/colorschememapping.xml
C:/subfolder/subfolder/subfolder/fsdewrwebxd_files/filelist.xml
C:/subfolder/subfolder/subfolder/FallingEdgeDelay_files/themedata.thmx
C:/subfolder/subfolder/subfolder/test/Fed_XX.xlsx
C:/subfolder/subfolder/subfolder/test/Fed_results.mat
C:/subfolder/subfolder/subfolder/test/Fed_test.slx
Можно было бы избавиться от имен файлов различными способами. Например,
sed 's_[^/]*\.\([^./]*\)$_*.\1_' foo.txt
, что дает:
C:/subfolder/subfolder/subfolder/dsfsdfs_files/*.xml
C:/subfolder/subfolder/subfolder/fsdewrwebxd_files/*.xml
C:/subfolder/subfolder/subfolder/FallingEdgeDelay_files/*.thmx
C:/subfolder/subfolder/subfolder/test/*.xlsx
C:/subfolder/subfolder/subfolder/test/*.mat
C:/subfolder/subfolder/subfolder/test/*.slx
Объяснение регулярного выражения:
- Поиск
something.else
в конце строки, где
something
не содержит /
, а где
else
не содержит /
или точку, а
- затем замените его на
*.else
.
Вы можете добавить:
| sort | uniq
после этого удалить все дубликаты.
Наконец, вы можете преобразовать это в форму, подходящую для вставки в ваш Makefile с помощью:
| sed 's/^/$(wildcard /;s/$/) \\/'
чтобы получить:
$(wildcard C:/subfolder/subfolder/subfolder/dsfsdfs_files/*.xml) \
$(wildcard C:/subfolder/subfolder/subfolder/fsdewrwebxd_files/*.xml) \
$(wildcard C:/subfolder/subfolder/subfolder/FallingEdgeDelay_files/*.thmx) \
$(wildcard C:/subfolder/subfolder/subfolder/test/*.xlsx) \
$(wildcard C:/subfolder/subfolder/subfolder/test/*.mat) \
$(wildcard C:/subfolder/subfolder/subfolder/test/*.slx) \