【发布时间】:2019-04-19 13:07:25
【问题描述】:
我希望在启动 make 时执行数据处理,并且输入目录中的一个或多个文件已更改。使用我当前的 Makefile 处理不会触发。
假设我正在建立一个示例项目:两个目录,一个包含数据文件。使用这个脚本:
#!/bin/bash
mkdir -p proj/input
mkdir -p proj/output
cd proj/input
echo "a2018" > 2018a.txt
echo "b2018" > 2018b.txt
echo "a2019" > 2019a.txt
echo "b2019" > 2019b.txt
我的 Makefile:
#proj/Makefile
RAW := $(shell find input -name "*.txt")
OUT := ./output
.PHONY: all
all: $(OUT)/*.txt
echo "Running processing of raw files"
$(OUT)/2018merged.txt: $(RAW)
./merge.sh 2018
$(OUT)/2019merged.txt: $(RAW)
./merge.sh 2019
合并脚本根据文件名按年份对文件进行基本连接,并将结果保存在输出目录的文件中。
#!/bin/bash
# proj/merge.sh
echo "-- merging files for $1"
cat input/$1*.txt > "./output/$1merged.txt"
我相信提供输入目录中的所有文件作为先决条件就足够了,但显然我做错了。 我发现关于类似问题的问题很少,并且可能存在部分解决方案:
【问题讨论】:
标签: bash makefile data-science