我有近6000个文件名(包括绝对路径),如何仅用*代替文件名而不是整个路径。寻找正则表达式仅查找文件名。
$(wildcard C:/subfolder/subfolder/subfolder/dsfsdfs_files/colorschememapping.xml) \
$(wildcard C:/subfolder/subfolder/subfolder/fsdewrwebxd_files/filelist.xml) \
$(wildcard C:/subfolder/subfolder/subfolder/FallingEdgeDelay_files/themedata.thmx) \
$(wildcard C:/subfolder/subfolder/subfolder/test/Fed_XX.xlsx) \
$(wildcard C:/subfolder/subfolder/subfolder/test/Fed_results.mat) \
$(wildcard C:/subfolder/subfolder/subfolder/test/Fed_test.slx) \
结果应该是
$(wildcard C:/subfolder/subfolder/subfolder/dsfsdfs_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) \
答案 0 :(得分:0)
对于您的问题,我并不十分清楚。但是您在评论中说:
我已经使用递归dir命令捕获了文件列表,并重定向到txt文件。我想用*替换所有文件名,并将其放入变量中以创建依赖项列表。
由此看来,这并不困难。假设您的文本文件为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) \