我有一个来自an earlier question I asked的工作解决方案,用于在源目录(/ foo / source)中查找csv文件,使用tail切断前233行,并将其保存到不同目录中的文件(/富/ DEST):
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文件,尾部,然后保存到其他位置。
谢谢!
答案 0 :(得分:1)
感谢@ 123的提示,我设法回答了我的问题:使用$$(basename {})
。