gpt4 book ai didi

linux - 在 Makefile 中使用 xargs basename

转载 作者:太空宇宙 更新时间:2023-11-04 10:32:05 26 4
gpt4 key购买 nike

我有一个来自 an earlier question I asked 的有效解决方案在源目录 (/foo/source) 中查找 csv 文件,使用 tail 截断前 233 行,并将其保存到不同目录 (/foo/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: No such file or directory

似乎 basename 命令在 Make 中不再起作用,因为它只是在保存时使用源文件的整个路径 + 文件名。

为什么会发生这种情况,有解决办法吗?有没有更简单的方法来实现我正在做的事情?我需要在文件夹中搜索 csv 文件,tail,然后保存到不同的位置。

谢谢!

最佳答案

感谢@123 的提示,我设法回答了我的问题:使用 $$(basename {})

关于linux - 在 Makefile 中使用 xargs basename,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39352113/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com