0
我有一个从an earlier question I asked的工作解决方案,用于在源目录(/ foo/source)中查找csv文件,使用尾部砍掉前233行,并将其保存到不同目录中的文件/ foo/dest):在Makefile中使用xargs basename
find /foo/source -name "*.csv" | xargs -I '{}' sh -c 'tail -n +232 {} > /foo/dest/$(basename {})'
在bash中按原样运行时,此功能非常有用。
我的问题是在一个Makefile目标完全相同的命令失败:
copyfiles:
find /foo/source -name "*.csv" | xargs -I '{}' sh -c 'tail -n +232 {} > /foo/dest/$(basename {})'
make copyfiles
SH:/foo/dest//foo.source/somecsv.csv:没有这样的文件或目录
在Make中,似乎basename命令不再起作用,因为它只是在保存时使用源文件的整个路径+文件名。
为什么会发生这种情况,有没有办法解决这个问题?有没有更简单的方法来实现我在做什么?我需要搜索一个文件夹中的csv文件,尾部,然后保存到不同的位置。
谢谢!
https://www.gnu.org/software/make/manual/html_node/Variables-in-Recipes.html假设带有'$'的子壳是变量。 – 123
感谢指针@ 123。排序。谢谢 –